/// <summary> /// Returns a string with comma separated appIdTuples of apps whose state matches given predicate; /// the apps go in alphabetical order ("m10.b", "m2.a"...) /// </summary> public string getAppsWithMatchingState(LocalOperations lo, Predicate<AppState> predicate) { var appIds = from a in lo.GetCurrentPlan().getAppDefs() where predicate( lo.GetAppState(a.AppIdTuple) ) orderby a.AppIdTuple.ToString() select a.AppIdTuple.ToString(); return string.Join(",", appIds.ToArray()); }
public Agent( string machineId, IClient client, bool fallbackToLocalOnDisconnection ) { LauncherFactory launcherFactory = new LauncherFactory(); AppInitializedDetectorFactory appInitializedDetectorFactory = new AppInitializedDetectorFactory(); this.localOps = new LocalOperations(machineId, launcherFactory, appInitializedDetectorFactory); this.netOps = new NetworkProxy( machineId, client, localOps ); this.proxy = new DirigentControlSwitchableProxy(selectProxyImpl(client.IsConnected())); this.client = client; this.fallbackToLocalOnDisconnection = fallbackToLocalOnDisconnection; }
public Agent( string machineId, IClient client, bool fallbackToLocalOnDisconnection, string rootForRelativePaths ) { LauncherFactory launcherFactory = new LauncherFactory(); AppInitializedDetectorFactory appInitializedDetectorFactory = new AppInitializedDetectorFactory(); this.localOps = new LocalOperations(machineId, launcherFactory, appInitializedDetectorFactory, rootForRelativePaths); this.netOps = new NetworkProxy(machineId, client, localOps); this.proxy = new DirigentControlSwitchableProxy(selectProxyImpl(client.IsConnected())); this.client = client; this.fallbackToLocalOnDisconnection = fallbackToLocalOnDisconnection; }
public void testLaunchSequence() { var lo = new LocalOperations("m1", lf, appInitializedDetectorFactory ); lo.SelectPlan( PlanRepo.plans["p1"] ); // start the plan lo.StartPlan(); var t = 0.0; Assert.AreEqual( 0, lf.appsLaunched.Count, "nothing started without tick" ); lo.tick( t ); Assert.AreEqual( "m1.b", getOrder(lf.appsLaunched), "'b' started as first app" ); t += 1.0; lo.tick( t ); Assert.AreEqual( "m1.b", getOrder(lf.appsLaunched), "'a' waiting, not yet starting (separ. interval of b is 2.0)" ); t += 1.0; lo.tick( t ); Assert.AreEqual( "m1.b,m1.a", getOrder(lf.appsLaunched), "'a' started" ); t += 1.0; lo.tick( t ); Assert.AreEqual( "m1.b,m1.a,m1.c", getOrder(lf.appsLaunched), "'c' started" ); t += 1.0; lo.tick( t ); Assert.AreEqual( "m1.b,m1.a,m1.c,m1.d", getOrder(lf.appsLaunched), "'d' started as last app" ); Assert.AreEqual( "m1.a,m1.b,m1.c,m1.d", getAppsWithMatchingState(lo, st => st.Running ), "all aps running" ); }
public void testRunApp() { var lo = new LocalOperations("m1", lf, appInitializedDetectorFactory ); lo.SelectPlan( PlanRepo.plans["p1"] ); AppState st; st = lo.GetAppState( ads["a"].AppIdTuple ); Assert.AreEqual( st.Started, false, "not yet launched" ); Assert.AreEqual( st.Running, false, "not yet running" ); Assert.AreEqual( st.Killed, false, "not yet killed"); Assert.AreEqual(st.Initialized, false, "not yet initialized"); lo.LaunchApp( ads["a"].AppIdTuple ); lo.tick( 10.0 ); st = lo.GetAppState( ads["a"].AppIdTuple ); Assert.AreEqual( st.Started, true, "launched" ); Assert.AreEqual( st.Running, true, "running" ); Assert.AreEqual(st.Killed, false, "not yet killed"); Assert.AreEqual(st.Initialized, true, "initialized"); lo.KillApp( ads["a"].AppIdTuple ); lo.tick( 10.0 ); st = lo.GetAppState( ads["a"].AppIdTuple ); Assert.AreEqual( st.Started, true, "started after kill" ); Assert.AreEqual(st.Killed, true, "killed after kill"); Assert.AreEqual(st.Running, false, "not running after kill"); Assert.AreEqual( st.Initialized, false, "not initialized after kill" ); }
public void testStopPlan() { var lo = new LocalOperations("m1", lf, appInitializedDetectorFactory ); var plan = PlanRepo.plans["p1"]; lo.SelectPlan( plan ); lo.StartPlan(); for(int i=0; i < 10; i++ ) lo.tick(i); // give enought ticks to start all Assert.AreEqual( "m1.a,m1.b,m1.c,m1.d", getAppsWithMatchingState(lo, st => st.Running ), "all aps running after Start()" ); lo.KillPlan(); lo.tick(20.0); Assert.AreEqual( "", getAppsWithMatchingState(lo, st => st.Running ), "no app running after Stop()" ); }