public void Read1() { LauncherFactory launcherFactory = new LauncherFactory(); AppInitializedDetectorFactory appInitializedDetectorFactory = new AppInitializedDetectorFactory(); var localOps = new LocalOperations("m1", launcherFactory, appInitializedDetectorFactory, null); localOps.SetPlanRepo(TestPlanRepo.plans.Values); var server = new CLIServer("127.0.0.1", 6001, localOps); server.Start(); var client = new TcpClient("localhost", 6001); SendReq(client, "001", "StartPlan p1"); server.Tick(); var resp001 = ReadResp(client, 1000); SendReq(client, "002", "GetAppState m1.a"); server.Tick(); var resp002 = ReadResp(client, 1000); SendReq(client, "003", "GetPlanState p1"); server.Tick(); var resp003 = ReadResp(client, 1000); SendReq(client, "004", "GetAllPlansState"); server.Tick(); var resp004 = ReadResp(client, 1000); SendReq(client, "005", "GetAllAppsState"); server.Tick(); var resp005 = ReadResp(client, 1000); client.Close(); //Assert.IsNotNull(cfg.Plans[0].getAppDefs()); //Assert.AreEqual( "m1.a", cfg.Plans[0].getAppDefs().First().AppIdTuple.ToString() ); server.Stop(); }
static bool Initialize() { try { var ac = getAppConfig(); if (AppInstanceAlreadyRunning(ac.masterPort)) { throw new Exception("Another instance of Dirigent Master is already running!"); } log.InfoFormat("Master running on port {0}", ac.masterPort); IEnumerable <ILaunchPlan> planRepo = (ac.scfg != null) ? ac.scfg.Plans : null; // start a local network-only agent // use unique client id to avoid conflict with any other possible client string machineId = Guid.NewGuid().ToString(); var dirigClient = new Dirigent.Net.Client(machineId, "127.0.0.1", ac.masterPort); string rootForRelativePaths = System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(ac.sharedCfgFileName)); agent = new Dirigent.Agent.Core.Agent(machineId, dirigClient, false, rootForRelativePaths); // start master server var s = new Server(ac.masterPort, agent.Control, planRepo, ac.startupPlanName); // server works through its ServerRemoteObject dirigClient.Connect(); // connect should succeed immediately (server runs locally) // start a telnet client server log.InfoFormat("Command Line Interface running on port {0}", ac.CLIPort); cliServer = new CLIServer("0.0.0.0", ac.CLIPort, agent.Control); cliServer.Start(); return(true); } catch (Exception ex) { log.Error(ex); //ExceptionDialog.showException(ex, "Dirigent Exception", ""); return(false); } }
public static int Main(string[] args) { if (!Directory.Exists(DATADIR)) { Directory.CreateDirectory(DATADIR); } if (File.Exists(CONFFILE)) { try { MadConf.LoadConf(CONFFILE); Console.WriteLine("(CONFIG) Config loaded."); MainWindow.configStatus = "Config loaded."; } catch (Exception e) { Console.WriteLine("(CONFIG) Config could not be loaded: " + e.Message); MadConf.SetToDefault(); Console.WriteLine("(CONFIG) Config could not be loaded. Using default config."); MainWindow.configStatus = "Loaded default config."; } } else { Console.WriteLine("(CONFIG) No config file found!"); MadConf.SetToDefault(); Console.WriteLine("(CONFIG) Loaded default config."); MadConf.SaveConf(CONFFILE); Console.WriteLine("(CONFIG) Saved default config to '" + CONFFILE + "'."); Console.WriteLine("(CONFIG) Default config may not use all possible features!"); } Logger.Init(); DB db = new DB(DBFILE); JobSystem js = new JobSystem(db); js.OnNodeCountChange += new EventHandler(ModelHost.SyncHostList); ModelHost.Init(ref js); DHCPReader dhcpReader = new DHCPReader(js); if (args.Length == 0) { GUI_USED = true; Logger.Log("Programm Start. GUI Start.", Logger.MessageType.INFORM); GUILogic.RunGUI(js, db, dhcpReader); } else if (args.Length == 1) { switch (args[0]) { case "-cli": Logger.Log("Programm Start. CLI Start.", Logger.MessageType.INFORM); CLI cli = new CLI(js, dhcpReader, db); cli.Start(); break; case "-cliserver": Logger.Log("Programm Start. CLI Server Start.", Logger.MessageType.INFORM); try { CLIServer cliServer = new CLIServer(js, dhcpReader, db); cliServer.Start(); Console.WriteLine("(SERVER) Listening on port " + cliServer.serverPort + " ..."); Logger.Log("CLIServer started on port " + cliServer.serverPort + " ..", Logger.MessageType.INFORM); Console.ReadKey(false); cliServer.Stop(); cliServer.Dispose(); Console.WriteLine("(SERVER) Stopped."); Logger.Log("Server stopped.", Logger.MessageType.INFORM); } catch (Exception e) { Console.WriteLine("(SERVER) Could not start: " + e.Message); Logger.Log("CLIServer could not start: " + e.Message, Logger.MessageType.ERROR); } PressAnyKeyToClose(); break; default: Console.WriteLine("ERROR! Argument '" + args[0] + "' not known!"); Logger.Log("Programm Aborted. False Call Argument!", Logger.MessageType.EMERGENCY); break; } } else { Console.WriteLine("ERROR! Too many arguments!"); Logger.Log("Programm Aborted. Too many arguments!", Logger.MessageType.EMERGENCY); PressAnyKeyToClose(); } js.Shutdown(); db.Dispose(); Logger.Log("Programm Exited Successfully. See Ya!", Logger.MessageType.INFORM); Logger.ForceWriteToLog(); Logger.Dispose(); if (restart) { Application.Restart(); } return(0); }