Beispiel #1
0
        public static async Task Start(string port, string seqPort)
        {
            const string clusterName = "test";

            var log = LoggerFactory.Create(x => x.AddSeq($"http://localhost:{seqPort}").SetMinimumLevel(LogLevel.Debug));

            Log.SetLoggerFactory(log);

            Console.WriteLine("Starting worker");

            var system        = new ActorSystem();
            var serialization = new Serialization();
            var cluster       = new Cluster(system, serialization);
            var grains        = new Grains(cluster);

            serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);
            grains.HelloGrainFactory(() => new HelloGrain());

            await cluster.Start(
                clusterName, "127.0.0.1", int.Parse(port),
                new ConsulProvider(new ConsulProviderOptions {
                DeregisterCritical = TimeSpan.FromSeconds(2)
            })
                );

            Console.WriteLine("Started worked on " + system.ProcessRegistry.Address);

            Console.ReadLine();

            await cluster.Shutdown();
        }
Beispiel #2
0
        public Sandbox Play()
        {
            CreateTemporaryDirectory();
            Grains.ToList().ForEach(x => x.Setup(this));

            return(this);
        }
        static async Task Main(string[] args)
        {
            var system = new ActorSystem();

            var remoteConfig = GrpcCoreRemoteConfig
                               .BindToLocalhost(12000)
                               .WithProtoMessages(ProtosReflection.Descriptor);

            var consulProvider =
                new ConsulProvider(new ConsulProviderConfig(), c => c.Address = new Uri("http://consul:8500/"));

            var clusterConfig =
                ClusterConfig.Setup("MyCluster", consulProvider, new PartitionIdentityLookup());

            system
            .WithRemote(remoteConfig)
            .WithCluster(clusterConfig);

            var grains = new Grains(system.Cluster());

            grains.HelloGrainFactory(() => new HelloGrain());

            await system.Cluster().StartMemberAsync();

            Console.CancelKeyPress += async(e, y) =>
            {
                Console.WriteLine("Shutting Down...");
                await system.Cluster().ShutdownAsync();
            };
            await Task.Delay(-1);
        }
    static async Task Main(string[] args)
    {
        var system        = new ActorSystem();
        var serialization = new Serialization();
        var cluster       = new Cluster(system, serialization);
        var grains        = new Grains(cluster);

        serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);

        await cluster.Start("MyCluster", "node1", 12001, new ConsulProvider(new ConsulProviderOptions(), c => c.Address = new Uri("http://consul:8500/")));

        await Task.Delay(2000);

        var client = grains.HelloGrain("Roger");

        var res = client.SayHello(new HelloRequest()).Result;

        Console.WriteLine(res.Message);


        res = client.SayHello(new HelloRequest()).Result;
        Console.WriteLine(res.Message);
        Console.CancelKeyPress += async(e, y) =>
        {
            Console.WriteLine("Shutting Down...");
            await cluster.Shutdown();
        };
        await Task.Delay(-1);
    }
Beispiel #5
0
        public static void Start()
        {
            var clusterName = "cluster" + DateTime.Now.Ticks;

            StartConsulDevMode();
            Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);
            Cluster.Start(clusterName, "127.0.0.1", 0, new ConsulProvider(new ConsulProviderOptions()));

            for (int i = 0; i < 30; i++)
            {
                var psi = new ProcessStartInfo("dotnet", "bin/" +
                                               "release" +
                                               "/netcoreapp1.1/TestApp.dll " + clusterName)
                {
                    //   UseShellExecute = false
                };
                Process.Start(psi);
            }
            EventStream.Instance.Subscribe <ClusterTopologyEvent>(e =>
            {
                Console.Write("T");
            });

            var options = new GrainCallOptions()
            {
                RetryCount  = 10,
                RetryAction = async i =>
                {
                    Console.Write("!");
                    i++;
                    await Task.Delay(i *i * 50);
                },
            };

            var tasks = new List <Task>();

            for (int i = 0; i < 20000; i++)
            {
                var client = Grains.HelloGrain("name" + i % 200);
                var task   = client.SayHello(new HelloRequest(), CancellationToken.None, options).ContinueWith(t =>
                {
                    if (t.Status == TaskStatus.RanToCompletion)
                    {
                        Console.Write(".");
                    }
                    else
                    {
                        Console.Write("#");
                    }
                });
                tasks.Add(task);
            }


            Task.WaitAll(tasks.ToArray());
            Console.WriteLine("Done!");
            Console.ReadLine();
        }
Beispiel #6
0
        static void Main(string[] args)
        {
            Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);
            Grains.HelloGrainFactory(() => new HelloGrain());

            Cluster.Start("MyCluster", "127.0.0.1", 12000, new ConsulProvider(new ConsulProviderOptions()));

            Console.ReadLine();
        }
Beispiel #7
0
        public static void Start(string clusterName)
        {
            //   Console.WriteLine("Starting worker");
            Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);
            Grains.HelloGrainFactory(() => new HelloGrain());

            Cluster.Start(clusterName, "127.0.0.1", 0, new ConsulProvider(new ConsulProviderOptions()));

            Console.ReadLine();
        }
Beispiel #8
0
    public void Test_total_grains()
    {
        System.Console.WriteLine(Grains.Square(1));
        System.Console.WriteLine(Grains.Square(2));
        System.Console.WriteLine(Grains.Square(3));

        System.Console.WriteLine(Grains.Square(4));
        System.Console.WriteLine(Grains.Square(5));
        Assert.That(Grains.Total(), Is.EqualTo(18446744073709551615));
    }
Beispiel #9
0
        private static void Main(string[] args)
        {
            Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);

            Grains.HelloGrainFactory(() => new HelloGrain());

            Cluster.Start("BorisNodeTest", "127.0.0.1", 12000, new ConsulProvider(new ConsulProviderOptions(), c => c.Address = new Uri("http://127.0.0.1:8500/")));
            Thread.Sleep(System.Threading.Timeout.Infinite);
            Console.WriteLine("Shutting Down...");
            Cluster.Shutdown();
        }
        public static async Task Start()
        {
            var log = LoggerFactory.Create(x => x.AddSeq().SetMinimumLevel(LogLevel.Debug));
            Log.SetLoggerFactory(log);

            var logger = log.CreateLogger("Client");

            logger.LogInformation("Test");
            const string clusterName = "test";

            var system = new ActorSystem();
            var serialization = new Serialization();
            var cluster = new Cluster(system, serialization);
            var grains = new Grains(cluster);

            serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);

            await cluster.Start(
                clusterName, "127.0.0.1", 0, new ConsulProvider(new ConsulProviderOptions { DeregisterCritical = TimeSpan.FromSeconds(2) })
            );

            system.EventStream.Subscribe<ClusterTopologyEvent>(e => logger.LogInformation("Topology changed {@Event}", e));
            system.EventStream.Subscribe<MemberStatusEvent>(e => logger.LogInformation("Member status {@Event}", e));

            var options = new GrainCallOptions
            {
                RetryCount = 10,
                RetryAction = i =>
                {
                    Console.Write("!");
                    return Task.Delay(50);
                }
            };

            Console.WriteLine("Ready to send messages, press Enter");
            Console.ReadLine();

            var policy = Policy.Handle<TaskCanceledException>().RetryForeverAsync();

            for (var i = 0; i < 100000; i++)
            {
                var client = grains.HelloGrain("name" + i % 200);

                await policy.ExecuteAsync(
                    () => client.SayHello(new HelloRequest(), CancellationToken.None, options)
                );
                Console.Write(".");
            }

            Console.WriteLine("Done!");
            Console.ReadLine();
            await cluster.Shutdown();
        }
Beispiel #11
0
    static void Main(string[] args)
    {
        Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);
        Remote.Start("127.0.0.1", 12001);
        Cluster.Start("MyCluster", new ConsulProvider(new ConsulProviderOptions()));

        var client = Grains.HelloGrain("TheName");

        var res = client.SayHello(new HelloRequest()).Result;

        Console.WriteLine(res.Message);
        Console.ReadLine();
    }
Beispiel #12
0
 public void GrowGrains()
 {
     for (int i = 0; i < Width - 1; i++)
     {
         for (int j = 0; j < Height - 1; j++)
         {
             Grain currentGrain   = GrainsInPreviousStep[i, j];
             Grain grainNeighbour = currentGrain.CheckNeigbours();
             if (grainNeighbour.IsAlive())
             {
                 GrainsInCurrentStep[i, j].Reviev(currentGrain);
                 Grains.Add(currentGrain);
             }
         }
     }
 }
Beispiel #13
0
    static void Main(string[] args)
    {
        StartConsulDevMode();
        Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);

        Cluster.Start("MyCluster", "127.0.0.1", 12001, new ConsulProvider(new ConsulProviderOptions()));

        var client = Grains.HelloGrain("Roger");

        var res = client.SayHello(new HelloRequest()).Result;

        Console.WriteLine(res.Message);
        Console.ReadLine();
        res = client.SayHello(new HelloRequest()).Result;
        Console.WriteLine(res.Message);
        Console.ReadLine();
        Console.WriteLine("Shutting Down...");
        Cluster.Shutdown();
    }
Beispiel #14
0
        static async Task Main(string[] args)
        {
            var system        = new ActorSystem();
            var serialization = new Serialization();
            var cluster       = new Cluster(system, serialization);
            var grains        = new Grains(cluster);

            serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);

            grains.HelloGrainFactory(() => new HelloGrain());

            await cluster.Start("MyCluster", "node2", 12000, new ConsulProvider(new ConsulProviderOptions(), c => c.Address = new Uri("http://consul:8500/")));

            Console.CancelKeyPress += async(e, y) =>
            {
                Console.WriteLine("Shutting Down...");
                await cluster.Shutdown();
            };
            await Task.Delay(-1);
        }
Beispiel #15
0
        private static void Main(string[] args)
        {
            Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);

            Cluster.Start("BorisNodeTest", "127.0.0.1", 12001, new ConsulProvider(new ConsulProviderOptions()));
            int counter = 300;
            var client  = Grains.HelloGrain("Grain2");

            while (counter < 400)
            {
                var res = client.SayHello((new HelloRequest()
                {
                    Sleep = 100, Count = counter
                })).Result;
                Console.WriteLine(res.Message);
                counter++;
            }
            Thread.Sleep(System.Threading.Timeout.Infinite);
            Console.WriteLine("Shutting Down...");
            Cluster.Shutdown();
        }
Beispiel #16
0
        public string ToMarkdown()
        {
            var sb = new StringBuilder();

            sb.Append(this.GenerateHeader());

            sb.AppendLine();
            sb.AppendLine("## Grain");
            sb.AppendLine();
            if (Grains.Any())
            {
                sb.AppendLine("| Name | Amount %|");
                sb.AppendLine("| ---- | ------: |");
                foreach (var grain in Grains)
                {
                    sb.AppendLine(grain.ToMarkdown());
                }
                sb.AppendLine();
            }
            if (Hops.Any())
            {
                sb.AppendLine("## Hops");
                sb.AppendLine();
                sb.AppendLine("| Name | Amount | Time |");
                sb.AppendLine("| ---- | -----: | ---: |");
                foreach (var hop in Hops)
                {
                    sb.AppendLine(hop.ToMarkdown());
                }
                sb.AppendLine();
            }
            sb.AppendLine("## Yeast");
            sb.AppendLine(Yeast);
            sb.AppendLine();
            sb.AppendLine("## Notes");
            sb.AppendLine(Notes);

            return(sb.ToString());
        }
Beispiel #17
0
        public List <Grain> InitializeBoard(int boardWidth, int boardHeight, int penColors)
        {
            Random random = new Random();

            for (int i = 0; i < penColors; i++)
            {
                Pen color = new Pen(Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 255)));
                PenColors.Add(color);
            }

            for (int i = 0; i < boardWidth; i++)
            {
                for (int j = 0; j < boardHeight; j++)
                {
                    Point position   = new Point(i, j);
                    int   colorIndex = random.Next(PenColors.Count);
                    Grain grain      = new Grain(position, PenColors[colorIndex]);
                    grain.SetGrainAlive();

                    Grains.Add(grain);
                }
            }
            return(Grains);
        }
Beispiel #18
0
 public void Test_total_grains()
 {
     Assert.That(Grains.Total(), Is.EqualTo(18446744073709551615));
 }
Beispiel #19
0
 public void Test_square_1()
 {
     Assert.That(Grains.Square(1), Is.EqualTo(1));
 }
Beispiel #20
0
 public void Test_square_32()
 {
     Assert.That(Grains.Square(32), Is.EqualTo(2147483648));
 }
Beispiel #21
0
 public void Test_square_64()
 {
     Assert.That(Grains.Square(64), Is.EqualTo(9223372036854775808));
 }
Beispiel #22
0
 public void Test_square_4()
 {
     Assert.That(Grains.Square(4), Is.EqualTo(8));
 }
Beispiel #23
0
 public void Test_square_16()
 {
     Assert.That(Grains.Square(16), Is.EqualTo(32768));
 }
Beispiel #24
0
 public void Test_square_2()
 {
     Assert.That(Grains.Square(2), Is.EqualTo(2));
 }
Beispiel #25
0
 public void Test_square_3()
 {
     Assert.That(Grains.Square(3), Is.EqualTo(4));
 }
Beispiel #26
0
 public void Returns_the_total_number_of_grains_on_the_board()
 {
     Assert.Equal(18446744073709551615UL, Grains.Total());
 }
Beispiel #27
0
 public void Square_greater_than_64_raises_an_exception()
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => Grains.Square(65));
 }
Beispiel #28
0
 public void Grains_on_square_1()
 {
     Assert.Equal(1UL, Grains.Square(1));
 }
Beispiel #29
0
 public void Negative_square_raises_an_exception()
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => Grains.Square(-1));
 }
Beispiel #30
0
 public void Square_0_raises_an_exception()
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => Grains.Square(0));
 }