public async Task When_Disposing_Bucket_In_Parallel_Does_Not_Dispose_Referenced_Bucket()
        {
            var clusterController = new ClusterController(_clientConfig);
            var cluster1          = new Cluster(_clientConfig, clusterController);
            var cluster2          = new Cluster(_clientConfig, clusterController);

            IBucket bucket1 = null;
            IBucket bucket2 = null;

            var t1 = new Thread(() =>
            {
                Thread.Sleep(100); // Give thread2 time to open the bucket
                using (bucket1 = cluster1.OpenBucket("default", "")) { }
            });

            t1.Start();

            using (bucket2 = cluster2.OpenBucket("default", ""))
            {
                Thread.Sleep(100);                // Sleep while thread1 disposes the bucket
                await bucket2.ExistsAsync("Key"); // Used to throw ObjectDisposedException
            }

            t1.Join();

            Assert.AreSame(bucket1, bucket2);
        }
Example #2
0
        public void When_Config_Contains_HOST_UpdateBoostrapList_Succeeds()
        {
            var json       = File.ReadAllText(@"Data\\Configuration\\bucketconfig-host-placeholder.json");
            var bytes      = Encoding.UTF8.GetBytes(json);
            var totalBytes = new byte[24 + bytes.Length];

            bytes.CopyTo(totalBytes, 24);

            var op = new Config(new AutoByteConverter(), _endPoint)
            {
                Data = new MemoryStream(totalBytes)
            };

            op.Header = new OperationHeader
            {
                BodyLength = bytes.Length
            };

            var bucketConfig = op.GetResult().Value;

            var controller          = new ClusterController(new ClientConfiguration());
            var updateBootstrapList = controller.GetType().GetMethod("UpdateBootstrapList", BindingFlags.NonPublic | BindingFlags.Instance);

            updateBootstrapList.Invoke(controller, new [] { bucketConfig });
        }
    //On collision with another ball
    void OnTriggerEnter(Collider other)
    {
        //Adds colliding ball to neighbour list. Second condition is to prevent blackBall from having grey neighbours
        if (other.tag == "BigBall" && !(gameObject.name == "BlackBall" && other.gameObject.renderer.material.color == Color.grey))
        {
            neighbours.Add(other.gameObject);
        }


        //If other target is smallBall ->destroy the smallBall
        if (other.tag == "SmallBall" && !other.transform.IsChildOf(transform) && this.tag != "MagazinedBall" && this.tag != "Floater")
        {
            //Rotate cluster according to impact
            Vector3 deltaVec   = other.transform.position - blackBall.transform.position;
            Vector3 rotateAxis = Vector3.Cross(deltaVec, direction);
            Vector3 sumVec     = deltaVec + direction;

            Vector3           ortogVec = Vector3.Cross(rotateAxis, deltaVec);
            float             rotSpeed = Vector3.Dot(ortogVec, sumVec);
            ClusterController clustCon = Camera.main.GetComponent <ClusterController>();
            clustCon.setVectors(rotSpeed * 30, rotateAxis);

            //Destroy the projectile's smallball
            GameObject           smallBall        = other.gameObject;
            GameObject           projectile       = smallBall.transform.parent.gameObject;
            ProjectileController projectileScript = projectile.GetComponent <ProjectileController>();
            projectileScript.collided = true;
            Destroy(smallBall);
        }

        if (other.tag == "Perimeter")
        {
            insidePerimeter = true;
        }
    }
Example #4
0
        public void CreateBucket_Throws_BootstrapException(string bucketType)
        {
            var mockConnectionPool = new Mock <IConnectionPool>();

            mockConnectionPool.Setup(x => x.EndPoint)
            .Returns(new IPEndPoint(IPAddress.Any, 0));
            var mockSaslMech  = new Mock <ISaslMechanism>();
            var mockIOService = new Mock <IIOService>();

            mockIOService.Setup(x => x.ConnectionPool)
            .Returns(mockConnectionPool.Object);
            mockIOService.Setup(x => x.SupportsEnhancedAuthentication)
            .Returns(false);
            mockIOService.Setup(x => x.Execute(It.IsAny <IOperation>()))
            .Returns(new OperationResult {
                Success = true
            });
            mockIOService.Setup(x => x.Execute(It.IsAny <IOperation <BucketConfig> >()))
            .Returns(new OperationResult <BucketConfig>
            {
                Success = false,
                Status  = ResponseStatus.UnknownCommand
            });

            var config   = new ClientConfiguration();
            var provider = new CarrierPublicationProvider(
                config,
                pool => mockIOService.Object,
                (c, e) => mockConnectionPool.Object,
                (ac, b, c, d) => mockSaslMech.Object,
                new DefaultConverter(),
                new DefaultTranscoder()
                );

            var controller = new ClusterController(
                new ClientConfiguration {
                EnableDeadServiceUriPing = false, ConfigPollEnabled = false
            },
                p => mockIOService.Object,
                (c, i) => mockConnectionPool.Object,
                (u, p, cp, t) => mockSaslMech.Object,
                new DefaultConverter(),
                new DefaultTranscoder());

            controller.ConfigProviders.Clear();
            controller.ConfigProviders.Add(provider);

            try
            {
                controller.CreateBucket("default");
                Assert.Fail("Test failed if CreateBucket does not throw exception.");
            }
            catch (Exception e)
            {
                Assert.IsInstanceOf <BootstrapException>(e);
                Assert.IsTrue(e.Message.StartsWith("Could not bootstrap - check inner exceptions for details."));
                Assert.IsInstanceOf <ConfigException>(e.InnerException);
            }
        }
Example #5
0
        public ClusterEdit(int id)
        {
            _clusterid = id;
            InitializeComponent();

            Cluster           cluster           = new Cluster();
            ClusterController clusterController = new ClusterController();

            cluster = clusterController.SearchForId(id);

            ClusterName.Text         = cluster.Name;
            ClusterManufacturer.Text = cluster.Manufacturer;
        }
Example #6
0
        private void Edit_Click(object sender, RoutedEventArgs e)
        {
            Cluster           cluster           = new Cluster();
            ClusterController clusterController = new ClusterController();

            cluster.Name         = ClusterName.Text;
            cluster.Manufacturer = ClusterManufacturer.Text;

            clusterController.Edit(cluster);


            MessageBox.Show("Cluster editado com sucesso!");
        }
Example #7
0
        private void Delete_Click(object sender, RoutedEventArgs e)
        {
            ClusterController clusterController = new ClusterController();

            if (_clusterid.HasValue)
            {
                clusterController.Delete(_clusterid.Value);
            }
            else
            {
                MessageBox.Show("O valor do ID do cluster está inválido para deletar.");
            }
        }
Example #8
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Cluster           cluster           = new Cluster();
            ClusterController clusterController = new ClusterController();

            cluster.Name         = ClusterName.Text;
            cluster.Manufacturer = ClusterManufacturer.Text;
            cluster.DatacenterID = (ComboBoxDatacenter.SelectedItem as Datacenter).DatacenterID;



            clusterController.Add(cluster);

            MessageBox.Show("Cluster criado com sucesso!");
        }
Example #9
0
    public static void lost(GameObject causeOfLoss)
    {
        Debug.Log("You just lost");
        hasLost = true;
        Camera.main.audio.clip = Resources.Load("lost") as AudioClip;
        Camera.main.audio.PlayOneShot(Camera.main.audio.clip);
        stopBalls();
        //Make cluster preview rotate
        ClusterController clustCon = Camera.main.GetComponent <ClusterController>();

        clustCon.previewSpin(0.0f, 30);


        //AudioSource[] audios = Camera.main.GetComponents<AudioSource>();
        //audios[1].Play();
    }
        public async Task get_all_clusters_returns_expected_status_code()
        {
            var serviceProviderBuilder = new ServiceProviderBuilder();
            var serviceProvider        = serviceProviderBuilder
                                         .WithServicesFromStartup()
                                         .WithInMemoryDb()
                                         .OverwriteService(typeof(IRestClient), new StubKafkaRestClient())
                                         .Build();
            var clusterController = new ClusterController(serviceProvider.GetService <IClusterRepository>());

            var response = await clusterController.GetAll();

            var okResult = response as ObjectResult;

            Assert.Equal(HttpStatusCode.OK.GetHashCode(), okResult.StatusCode);
        }
        public ClusterMonitor([NotNull] ClusterController clusterController)
        {
            if (clusterController == null)
            {
                throw new ArgumentNullException("clusterController");
            }

            // Use Couchbase HTTP client even though we don't need authentication
            // So that we get our custom server certificate validation if SSL is being used
            _httpClient = new CouchbaseHttpClient("any-bucket", "")
            {
                Timeout = PingTimeout
            };

            _clusterController = clusterController;
            _queryUriTester    = new QueryUriTester(_httpClient);
            _searchUriTester   = new SearchUriTester(_httpClient);
        }
        public async Task get_all_clusters_returns_expected_body_when_no_clusters_available()
        {
            var serviceProviderBuilder = new ServiceProviderBuilder();
            var serviceProvider        = serviceProviderBuilder
                                         .WithServicesFromStartup()
                                         .WithInMemoryDb()
                                         .OverwriteService(typeof(IRestClient), new StubKafkaRestClient())
                                         .Build();
            var clusterController = new ClusterController(serviceProvider.GetService <IClusterRepository>());

            var response = await clusterController.GetAll();

            var okResult = response as OkObjectResult;

            Assert.Equal(
                expected: "[]",
                actual: JsonSerializer.Serialize(okResult.Value)
                );
        }
        public void SetUp()
        {
            var configuration  = new ClientConfiguration();
            var clusterManager = new ClusterController(configuration, (p) =>
            {
                var operation = new FakeOperation(new ManualByteConverter());
                operation.SetOperationResult(new FakeOperationResult(operation)
                {
                    Message = "nmv",
                    Cas     = 231,
                    Status  = ResponseStatus.VBucketBelongsToAnotherServer,
                    Success = false,
                    Value   = string.Empty
                });
                return(new FakeIOStrategy <FakeOperation>(operation));
            });

            _cluster = new Cluster(configuration, clusterManager);
        }
        public void When_HttpConfigProvider_Used_ClusterInfo_Accessible()
        {
            var clusterManager = new ClusterController(_clientConfig);

            //force use of StreamingHttpProvider by removing other providers
            clusterManager.ConfigProviders.Remove(
                clusterManager.ConfigProviders.Find(provider => !(provider is HttpStreamingProvider)));
            var cluster = new Cluster(_clientConfig, clusterManager);
            var bucket  = cluster.OpenBucket("default", "");
            var info    = cluster.Info;

            cluster.CloseBucket(bucket);
            cluster.Dispose();

            Assert.NotNull(info);
            Assert.NotNull(info.Pools());
            Assert.NotNull(info.BucketConfigs());
            Assert.Greater(info.BucketConfigs().Count, 0);
            Assert.NotNull(info.BucketConfigs().ElementAt(0));
        }
Example #15
0
        /// <summary>
        /// Updates the configuration if the <see cref="IOperation"/> returns a <see cref="IBucketConfig"/>
        /// </summary>
        /// <param name="operation">The <see cref="IOperation"/> with the <see cref="IBucketConfig"/> to check for.</param>
        /// <returns></returns>
        public bool CheckForConfigUpdates(IOperation operation)
        {
            var requiresRetry = false;

            try
            {
                var bucketConfig = operation.GetConfig();
                if (bucketConfig != null)
                {
                    Log.Info(m => m("New config found {0}|{1}", bucketConfig.Rev, ConfigInfo.BucketConfig.Rev));
                    ClusterController.NotifyConfigPublished(bucketConfig);
                    requiresRetry = true;
                }
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
            return(requiresRetry);
        }
        public void When_Same_Bucket_Requested_Twice_In_Parallel_Only_One_Bootstrap_Is_Done()
        {
            var clusterController = new ClusterController(_clientConfig);
            var cluster1          = new Cluster(_clientConfig, clusterController);
            var cluster2          = new Cluster(_clientConfig, clusterController);

            object bucket1 = null;
            object bucket2 = null;

            var t1 = new Thread(() => bucket1 = cluster1.OpenBucket("default", ""));
            var t2 = new Thread(() => bucket2 = cluster2.OpenBucket("default", ""));

            t1.Start();
            t2.Start();
            t1.Join();
            t2.Join();

            Assert.IsNotNull(bucket1);
            Assert.AreSame(bucket1, bucket2);
        }
        /// <summary>
        /// Updates the configuration if the <see cref="IOperation"/> returns a <see cref="IBucketConfig"/>
        /// </summary>
        /// <param name="operation">The <see cref="IOperation"/> with the <see cref="IBucketConfig"/> to check for.</param>
        /// <returns></returns>
        public bool CheckForConfigUpdates(IOperation operation)
        {
            var requiresRetry = false;

            try
            {
                var bucketConfig = operation.GetConfig(ClusterController.ServerConfigTranscoder);
                if (bucketConfig != null)
                {
                    Log.Info("New config found {0}|{1}", bucketConfig.Rev, ConfigInfo.BucketConfig.Rev);
                    Log.Debug("{0}", JsonConvert.SerializeObject(bucketConfig));
                    ClusterController.NotifyConfigPublished(bucketConfig);
                    requiresRetry = true;
                }
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
            return(requiresRetry);
        }
        public async Task get_all_clusters_returns_expected_body_with_clusters_available()
        {
            var serviceProviderBuilder = new ServiceProviderBuilder();
            var serviceProvider        = serviceProviderBuilder
                                         .WithServicesFromStartup()
                                         .WithInMemoryDb()
                                         .OverwriteService(typeof(IRestClient), new StubKafkaRestClient())
                                         .Build();
            var clusterController = new ClusterController(serviceProvider.GetService <IClusterRepository>());

            var clusterRepository = serviceProvider.GetService <IClusterRepository>();
            await clusterRepository.AddAsync("Dummy test cluster #1", "lkc-9999", true, Guid.Parse("1d569b07-75b4-4e2f-b067-6583401a09c8"));

            await clusterRepository.AddAsync("Dummy test cluster #2", "lkc-9998", true, Guid.Parse("b8c32078-9eec-4809-8f4e-5efbe509b78f"));

            var response = await clusterController.GetAll();

            var okResult = response as OkObjectResult;

            Assert.Equal(
                expected: "[{\"Name\":\"Dummy test cluster #1\",\"Description\":\"\",\"Enabled\":true,\"ClusterId\":\"lkc-9999\",\"DomainEvents\":[],\"Id\":\"1d569b07-75b4-4e2f-b067-6583401a09c8\"},{\"Name\":\"Dummy test cluster #2\",\"Description\":\"\",\"Enabled\":true,\"ClusterId\":\"lkc-9998\",\"DomainEvents\":[],\"Id\":\"b8c32078-9eec-4809-8f4e-5efbe509b78f\"}]",
                actual: JsonSerializer.Serialize(okResult.Value)
                );
        }
Example #19
0
    private void setUpLevel()
    {
        Debug.Log("Setting up level");
        GameMaster.levelComplete = false;

        //Setting power ups
        upgrades["BombFrequency"] = upgrades["BombFrequencyBase"] - (PlayerPrefs.GetInt("BombFrequencyLevel"));
        upgrades["BombSize"]      = upgrades["BombSizeBase"] + (PlayerPrefs.GetInt("BombSizeLevel"));
        upgrades["FreeView"]      = upgrades["FreeViewBase"] + (PlayerPrefs.GetInt("FreeViewLevel"));
        GameObject playMaster    = GameObject.Find("PlayLevelMaster");
        GameGUI    gameGUIScript = playMaster.GetComponent <GameGUI>();

        gameGUIScript.initiateBomb();
        getLevelInfo();

        PerimeterController.missLeft = GameMaster.missToShrinkPer;
        ColorManager.setColors(nColors);
        Camera.main.audio.clip = Resources.Load("DST-Destiny") as AudioClip;
        Camera.main.audio.PlayOneShot(Camera.main.audio.clip);
        Camera.main.audio.volume = 0.02f;

        //Set background
        GameObject backGround = GameObject.Find("BackGroundPlane");

        backGround.renderer.material.mainTexture = backGroundTex;


        //Remove existing objects
        GameObject[] clusterBalls = GameObject.FindGameObjectsWithTag("BigBall");
        foreach (GameObject go in clusterBalls)
        {
            Destroy(go);
        }

        GameObject[] magazinedBalls = GameObject.FindGameObjectsWithTag("MagazinedBall");
        foreach (GameObject go in magazinedBalls)
        {
            Destroy(go);
        }


        //if(GameMaster.world == "space" && GameMaster.levelNr==GameMaster.nLevelsInWorld+1)	GameMaster.hasWon = true;
        //else{
        GameObject perimeter = GameObject.FindWithTag("Perimeter");

        if (perimeter != null)
        {
            Destroy(perimeter);
        }

        GameObject playLevelMaster = GameObject.FindWithTag("PlayLevelMaster");

        if (playLevelMaster != null)
        {
            SpawnBalls spawnBallsScript = playLevelMaster.GetComponent <SpawnBalls>();
            spawnBallsScript.initiateLevel();
        }

        //Make cluster preview rotate
        ClusterController clustCon = Camera.main.GetComponent <ClusterController>();

        clustCon.previewSpin(4.0f, 360);
        gameGUIScript.popUpText("Level " + levelNr, 3.5f);

        Invoke("setLevelReady", 4.5f);
        //Invoke("setLevelReady",0.5f);
        //}
    }
Example #20
0
        public void StartMonitoring()
        {
            Task.Run(async() =>
            {
                Thread.CurrentThread.Name = "CM";
                var index = 0;
                while (!_cts.IsCancellationRequested)
                {
                    try
                    {
                        _log.Debug("Waiting to check configs...");

                        // Test at every interval.  Wait before first test.
                        await Task.Delay(TimeSpan.FromMilliseconds(Configuration.ConfigPollInterval), _cts.Token);

                        _log.Debug("Checking configs...");

                        var now             = DateTime.Now;
                        var lastCheckedPlus = ClusterController.
                                              LastConfigCheckedTime.
                                              AddMilliseconds(Configuration.ConfigPollCheckFloor);

                        if (lastCheckedPlus > now)
                        {
                            _log.Info("By-passing config checks because {0} > {1}", lastCheckedPlus, now);
                            continue;
                        }

                        foreach (var provider in ClusterController.ConfigProviders.OfType <CarrierPublicationProvider>())
                        {
                            var contexts = provider.ConfigContexts;
                            foreach (var ctx in contexts)
                            {
                                var servers = ctx.Servers.Where(x => x.IsDataNode && !x.IsDown).ToList();
                                // ReSharper disable once PossibleMultipleEnumeration
                                if (!servers.Any())
                                {
                                    _log.Info("No servers with Data service available for bucket {0}", ctx.BucketName);
                                    continue;
                                }

                                index      = (index + 1) % servers.Count;
                                var server = servers[index];

                                _log.Info("Using index {0} - server {1}", index, server);

                                var operation = new Config(
                                    ClusterController.Transcoder,
                                    Configuration.DefaultOperationLifespan,
                                    server.EndPoint);

                                IOperationResult <BucketConfig> configResult;
                                using (Configuration.Tracer.StartParentSpan(operation, addIgnoreTag: true))
                                {
                                    configResult = server.Send(operation);
                                }

                                if (configResult.Success && configResult.Status == ResponseStatus.Success)
                                {
                                    var config = configResult.Value;
                                    if (config != null)
                                    {
                                        _log.Info("Checking config with revision #{0}", config.Rev);
                                        ClusterController.EnqueueConfigForProcessing(config);
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    catch (OperationCanceledException)
                    {
                        /*ignore*/
                        break;
                    }
                    catch (Exception ex)
                    {
                        _log.Info("Unhandled error in ConfigMonitor, ignoring", ex);
                    }
                    finally
                    {
                        ClusterController.LastConfigCheckedTime = DateTime.Now;
                    }
                }
            }, _cts.Token).ContinueOnAnyContext();
        }
Example #21
0
        private void ClusterList_Loaded(object sender, RoutedEventArgs e)
        {
            ClusterController clusterController = new ClusterController();

            ClusterList.ItemsSource = clusterController.ListAll();
        }