示例#1
0
 /// <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());
 }
示例#2
0
文件: Agent.cs 项目: pjanec/dirigent
 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;
 }
示例#3
0
        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;
        }
示例#4
0
        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" );
        }
示例#5
0
        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" );
        }
示例#6
0
        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()" );
        }