public InvoiceSubmissionRouter(TestUntil testUntil) :
     base(new RouterSpecification(
              0,
              Definition.Has <ERPSpecificInvoiceSubmitter>(Definition.Parameters(ERPSystemCode.None, testUntil)),
              typeof(IInvoiceSubmitter)))
 {
 }
Exemple #2
0
        public void TestActuallyCompletes()
        {
            var properties = new Properties();

            properties.SetProperty("plugin.name.pooledCompletes", "true");
            properties.SetProperty("plugin.pooledCompletes.classname", "Vlingo.Actors.Plugin.Completes.PooledCompletesPlugin");
            properties.SetProperty("plugin.pooledCompletes.pool", "10");

            var pluginProperties = new PluginProperties("pooledCompletes", properties);

            var plugin = new PooledCompletesPlugin();

            plugin.Configuration.BuildWith(world.Configuration, pluginProperties);

            plugin.Start(world);

            var clientCompletes = new MockCompletes <object>();

            clientCompletes.UntilWith = TestUntil.Happenings(1);
            var asyncCompletes = world.CompletesFor(clientCompletes);

            asyncCompletes.With(5);
            clientCompletes.UntilWith.Completes();

            Assert.Equal(1, clientCompletes.WithCount);
            Assert.Equal(5, clientCompletes.Outcome);
        }
 public MathCommandRouter(int poolSize, TestUntil testUntil) :
     base(new RouterSpecification(
              poolSize,
              Definition.Has <MathCommandWorker>(Definition.Parameters(testUntil)),
              typeof(IThreeArgConsumerProtocol)))
 {
 }
Exemple #4
0
        public void TestRedistributeUnconfirmed()
        {
            var allOtherNodes = Config.AllOtherNodes(_localNodeId).ToList();

            var channel2 = _channelProvider.ChannelFor(allOtherNodes[0].Id);

            Mock(channel2).Until = TestUntil.Happenings(1);

            var channel3 = _channelProvider.ChannelFor(allOtherNodes[1].Id);

            Mock(channel3).Until = TestUntil.Happenings(1);

            var set     = AttributeSet.Named("test-set");
            var tracked = set.AddIfAbsent(Attribute <string> .From("test-attr", "test-value"));

            _confirmingDistributor.Distribute(set, tracked, ApplicationMessageType.AddAttribute);

            _confirmingDistributor.RedistributeUnconfirmed();

            Mock(channel2).Until.Completes();
            Assert.Single(Mock(channel2).Writes);

            Mock(channel3).Until.Completes();
            Assert.Single(Mock(channel3).Writes);
        }
        public void TestStopActors()
        {
            var testResults = new TestResults();

            testResults.untilStart = TestUntil.Happenings(12);

            var stoppables = SetUpActors(World, testResults);

            for (int idx = 0; idx < stoppables.Length; ++idx)
            {
                stoppables[idx].CreateChildren();
            }

            testResults.untilStart.CompletesWithin(2000);

            testResults.untilStop = TestUntil.Happenings(12);

            for (int idx = 0; idx < stoppables.Length; ++idx)
            {
                stoppables[idx].Stop();
            }

            testResults.untilStop.CompletesWithin(2000);

            Assert.Equal(12, testResults.stopCount.Get());

            testResults.untilTerminatingStop = TestUntil.Happenings(0);

            testResults.terminating.Set(true);
            World.Terminate();

            testResults.untilTerminatingStop.CompletesWithin(2000);

            Assert.Equal(0, testResults.terminatingStopCount.Get());
        }
 public OrderRouterActor(int poolSize, TestUntil testUntil)
     : base(
         new RouterSpecification(
             poolSize,
             Definition.Has <OrderRouterWorker>(Definition.Parameters(testUntil)),
             typeof(IRoundRobinOrderRouter)),
         new RoundRobinRoutingStrategy())
 {
 }
Exemple #7
0
 private AccessSafely(int happenings)
 {
     _totalWrites = new AtomicInteger(0);
     _until       = TestUntil.Happenings(happenings);
     _biConsumers = new Dictionary <string, object>();
     _consumers   = new Dictionary <string, object>();
     _functions   = new Dictionary <string, object>();
     _suppliers   = new Dictionary <string, object>();
     _lock        = new object();
 }
Exemple #8
0
 private AccessSafely(AccessSafely existing, int happenings)
 {
     _totalWrites = existing._totalWrites;
     _until       = TestUntil.Happenings(happenings);
     _biConsumers = existing._biConsumers;
     _consumers   = existing._consumers;
     _functions   = existing._functions;
     _suppliers   = existing._suppliers;
     _lock        = new object();
 }
        public void TestPlayPingPong()
        {
            var world  = World.StartWithDefaults("playground");
            var until  = TestUntil.Happenings(1);
            var pinger = world.ActorFor <IPinger>(() => new PingerActor(until));
            var ponger = world.ActorFor <IPonger>(() => new PongerActor());

            pinger.Ping(ponger);

            until.Completes();

            world.Terminate();
        }
        public void TestStartWorldWithDefaultConfiguration()
        {
            var worldDefaultConfig = World.Start("defaults");
            var testResults = new TestResults();
            var simple = worldDefaultConfig.ActorFor<ISimpleWorldForDefaultConfig>(
                Definition.Has<SimpleActor>(
                    Definition.Parameters(testResults)));
            testResults.UntilSimple = TestUntil.Happenings(1);

            simple.SimplySay();
            testResults.UntilSimple.Completes();

            Assert.True(testResults.Invoked.Get());
        }
        public void TestThatItRoutes()
        {
            var       world = World.StartWithDefault("RoundRobinRouterTest");
            const int poolSize = 4, messagesToSend = 8;
            var       until       = TestUntil.Happenings(messagesToSend);
            var       orderRouter = world.ActorFor <IRoundRobinOrderRouter>(
                Definition.Has <OrderRouterActor>(Definition.Parameters(poolSize, until)));

            for (var i = 0; i < messagesToSend; ++i)
            {
                orderRouter.RouteOrder(new RoundRobinOrder(i));
            }

            until.Completes();
        }
Exemple #12
0
        public void TestDeliverWithParameters()
        {
            var testResults = new SimpleTestResults();

            TestWorld.ActorFor <ISimple>(Definition.Has <SimpleActor>(Definition.Parameters(testResults), "test1-actor"));
            testResults.UntilSimple = TestUntil.Happenings(1);

            Action <ISimple> consumer = x => x.Simple2(2);
            var message = new LocalMessage <ISimple>(SimpleActor.Instance.Value, consumer, "Simple2(int)");

            message.Deliver();
            testResults.UntilSimple.Completes();

            Assert.Equal(1, testResults.Deliveries.Get());
        }
Exemple #13
0
        public void TestActorForNoDefinitionAndProtocol()
        {
            var testResults = new TestResults();
            var simple      = World.Stage.ActorFor <ISimpleWorld>(typeof(SimpleActor), testResults);

            testResults.UntilSimple = TestUntil.Happenings(1);
            simple.SimpleSay();
            testResults.UntilSimple.Completes();
            Assert.True(testResults.Invoked.Get());

            var test = World.Stage.ActorFor <INoProtocol>(typeof(TestInterfaceActor));

            Assert.NotNull(test);
            Assert.NotNull(TestInterfaceActor.Instance.Value);
            Assert.Equal(World.DefaultParent, TestInterfaceActor.Instance.Value.LifeCycle.Environment.Parent);
        }
Exemple #14
0
        public void TestThatItRoutes()
        {
            var       world = World.StartWithDefault("RandomRouterTest");
            const int poolSize = 4, messagesToSend = 40;
            var       until = TestUntil.Happenings(messagesToSend);

            var orderRouter = world.ActorFor <IOrderRandomRouter>(Definition.Has <OrderRouterActor>(Definition.Parameters(poolSize, until)));
            var random      = new Random();

            for (int i = 0; i < messagesToSend; i++)
            {
                orderRouter.RouteOrder(new RandomRouterOrder());
            }

            until.Completes();
        }
        public void TestPlayPingPong()
        {
            var world = World.Start("playground");
            var until = TestUntil.Happenings(1);

            var pinger = world.ActorFor <IPinger>(
                Definition.Has <PingerActor>(Definition.Parameters(until)));

            var ponger = world.ActorFor <IPonger>(
                Definition.Has <PongerActor>(
                    Definition.NoParameters));

            pinger.Ping(ponger);
            until.Completes();
            world.Terminate();
        }
Exemple #16
0
        public void TestDeliverStopped()
        {
            var testResults = new SimpleTestResults();

            TestWorld.ActorFor <ISimple>(Definition.Has <SimpleActor>(Definition.Parameters(testResults), "test1-actor"));
            testResults.UntilSimple = TestUntil.Happenings(1);

            SimpleActor.Instance.Value.Stop();

            Action <ISimple> consumer = actor => actor.Simple();
            var message = new LocalMessage <ISimple>(SimpleActor.Instance.Value, consumer, "Simple()");

            message.Deliver();

            Assert.Equal(1, testResults.UntilSimple.Remaining);
            Assert.Equal(0, testResults.Deliveries.Get());
        }
        public void TestThatItRoutes()
        {
            var       world = World.StartWithDefault("ContentBasedRouterTest");
            const int poolSize = 4, messagesToSend = 40;
            var       until = TestUntil.Happenings(messagesToSend);

            var orderRouter = world.ActorFor <IOrderContentRouter>(Definition.Has <OrderRouterActor>(Definition.Parameters(poolSize, until)));
            var customerIds = new[] { "Customer1", "Customer2", "Customer3", "Customer4" };
            var random      = new Random();

            for (int i = 0; i < messagesToSend; i++)
            {
                var customerId = customerIds[random.Next(customerIds.Length)];
                orderRouter.RouteOrder(new Order(customerId));
            }

            until.Completes();
        }
        public void TestThreeArgConsumerProtocol()
        {
            var poolSize       = 4;
            var rounds         = 2;
            var messagesToSend = poolSize * rounds;
            var until          = TestUntil.Happenings(messagesToSend);
            var testRouter     = TestWorld.ActorFor <IThreeArgConsumerProtocol>(
                Definition.Has <MathCommandRouter>(Definition.Parameters(poolSize, until)));

            for (var round = 0; round < messagesToSend; ++round)
            {
                testRouter.Actor.DoSomeMath(round, round, round);
            }

            until.Completes();

            var routerActor = (MathCommandRouter)testRouter.ActorInside;

            foreach (var routee in routerActor.Routees)
            {
                Assert.Equal(messagesToSend, routee.MessageCount);
            }
        }
        public void TestCompletesAddressMatches()
        {
            var properties = new Properties();

            properties.SetProperty("plugin.name.pooledCompletes", "true");
            properties.SetProperty("plugin.pooledCompletes.classname", "Vlingo.Actors.Plugin.Completes.PooledCompletesPlugin");
            properties.SetProperty("plugin.pooledCompletes.pool", "10");

            var pluginProperties = new PluginProperties("pooledCompletes", properties);
            var plugin           = new PooledCompletesPlugin();

            plugin.Configuration.BuildWith(World.Configuration, pluginProperties);

            plugin.Start(World);

            var clientCompletes1 = new MockCompletes <int>();
            var clientCompletes2 = new MockCompletes <int>();

            clientCompletes1.UntilWith = TestUntil.Happenings(1);
            var completes1 = World.CompletesFor(clientCompletes1);

            completes1.With(5);
            clientCompletes1.UntilWith.Completes();

            clientCompletes2.UntilWith = TestUntil.Happenings(1);
            var completes2 = World.CompletesFor(completes1.Address, clientCompletes2);

            completes2.With(10);
            clientCompletes2.UntilWith.Completes();

            Assert.Equal(1, clientCompletes1.WithCount);
            Assert.Equal(5, clientCompletes1.Outcome);
            Assert.Equal(1, clientCompletes2.WithCount);
            Assert.Equal(10, clientCompletes2.Outcome);
            Assert.Equal(completes1, completes2);
        }
Exemple #20
0
 public PingerActor(TestUntil until)
 {
     _count = 0;
     _self  = SelfAs <IPinger>();
     _until = until;
 }
 public MockCompletes()
     : base((Scheduler)null)
 {
     UntilWith = TestUntil.Happenings(0);
     WithCount = 0;
 }
 public TestResult(int happenings)
 {
     deadLetters = new List <DeadLetter>();
     until       = TestUntil.Happenings(happenings);
 }
Exemple #23
0
 public OrderRouterWorker(TestUntil testUntil)
 {
     this.testUntil = testUntil;
 }
 public ERPSpecificInvoiceSubmitter(ERPSystemCode erp, TestUntil testUntil)
 {
     this.erp       = erp;
     this.testUntil = testUntil;
     submitted      = new List <Invoice>();
 }
        public void TestThatItRoutes()
        {
            var messagesToSend = 63;
            var until          = TestUntil.Happenings(messagesToSend);

            var erpsToTest = new[] { ERPSystemCode.Alpha, ERPSystemCode.Beta, ERPSystemCode.Charlie };

            var routerTestActorProtocols = World.ActorFor(
                new[] { typeof(IInvoiceSubmitter), typeof(IInvoiceSubmitterSubscription) },
                typeof(InvoiceSubmissionRouter),
                until);

            var routerProtocols = Protocols.Two <IInvoiceSubmitter, IInvoiceSubmitterSubscription>(routerTestActorProtocols);

            var routerAsInvoiceSubmitter             = routerProtocols._1;
            var routerAsInvoiceSubmitterSubscription = routerProtocols._2;

            var alphaSubmitterTestActor = TestWorld.ActorFor <IInvoiceSubmitter>(typeof(ERPSpecificInvoiceSubmitter), ERPSystemCode.Alpha, until);

            routerAsInvoiceSubmitterSubscription.Subscribe(alphaSubmitterTestActor.ActorAs <IInvoiceSubmitter>());

            var betaSubmitterTestActor = TestWorld.ActorFor <IInvoiceSubmitter>(typeof(ERPSpecificInvoiceSubmitter), ERPSystemCode.Beta, until);

            routerAsInvoiceSubmitterSubscription.Subscribe(betaSubmitterTestActor.ActorAs <IInvoiceSubmitter>());

            var charlieSubmitterTestActor = TestWorld.ActorFor <IInvoiceSubmitter>(typeof(ERPSpecificInvoiceSubmitter), ERPSystemCode.Charlie, until);

            routerAsInvoiceSubmitterSubscription.Subscribe(charlieSubmitterTestActor.ActorAs <IInvoiceSubmitter>());

            var random     = new Random();
            var countByERP = new int[erpsToTest.Length];

            Array.Fill(countByERP, 0);

            for (var i = 0; i < messagesToSend; ++i)
            {
                var erpIndex = random.Next(3);
                var erp      = erpsToTest[erpIndex];
                var invoice  = Invoice.With(erp, i, RandomMoney(random));
                routerAsInvoiceSubmitter.SubmitInvoice(invoice);
                countByERP[erpIndex] += 1;
            }

            until.Completes();

            var alphaSubmitter = (ERPSpecificInvoiceSubmitter)alphaSubmitterTestActor.ActorInside;

            Assert.Equal(countByERP[0], alphaSubmitter.submitted.Count);
            foreach (var invoice in alphaSubmitter.submitted)
            {
                Assert.Equal(ERPSystemCode.Alpha, invoice.erp);
            }

            var betaSubmitter = (ERPSpecificInvoiceSubmitter)betaSubmitterTestActor.ActorInside;

            Assert.Equal(countByERP[1], betaSubmitter.submitted.Count);
            foreach (var invoice in betaSubmitter.submitted)
            {
                Assert.Equal(ERPSystemCode.Beta, invoice.erp);
            }

            var charlieSubmitter = (ERPSpecificInvoiceSubmitter)charlieSubmitterTestActor.ActorInside;

            Assert.Equal(countByERP[2], charlieSubmitter.submitted.Count);
            foreach (var invoice in charlieSubmitter.submitted)
            {
                Assert.Equal(ERPSystemCode.Charlie, invoice.erp);
            }
        }
 public CompletesActorProtocolTest()
 {
     untilHello = TestUntil.Happenings(1);
     untilOne   = TestUntil.Happenings(1);
 }
Exemple #27
0
 public MockManagedOutboundChannel(Id id)
 {
     Id     = id;
     Writes = new List <string>();
     Until  = TestUntil.Happenings(0);
 }
 public Results(int times)
 {
     until = TestUntil.Happenings(times);
 }
Exemple #29
0
 public TestUntil Until(int times) => TestUntil.Happenings(times);
Exemple #30
0
 public Results(int overrideReceived, int stowReceived)
 {
     this.overrideReceived = TestUntil.Happenings(overrideReceived);
     this.stowReceived     = TestUntil.Happenings(stowReceived);
 }