예제 #1
0
        public void ToString_Returns_NonEmptyString()
        {
            var featureIdentifier      = new FeatureIdentifier("a");
            var microserviceIdentifier = new MicroserviceIdentifier("b");

            var sot = new DeploymentGene(featureIdentifier, microserviceIdentifier);

            Assert.False(string.IsNullOrEmpty(sot.ToString()));
        }
예제 #2
0
        public void Constructor_Sets_Fields_Correctly()
        {
            var featureIdentifier      = new FeatureIdentifier("a");
            var microserviceIdentifier = new MicroserviceIdentifier("b");

            var sot = new DeploymentGene(featureIdentifier, microserviceIdentifier);

            Assert.AreEqual(featureIdentifier, sot.FeatureId);
            Assert.AreEqual(microserviceIdentifier, sot.MicroserviceId);
        }
        public IDeploymentChromosome Mutate(IDeploymentChromosome deployment)
        {
            var genes           = deployment.Genes;
            var microserviceIds = genes.Select(g => new MicroserviceIdentifier(g.FeatureId.ToString())).ToArray();
            var newGenes        = new List <IDeploymentGene>();

            foreach (var gene in genes)
            {
                var clonedGene = new DeploymentGene(gene.FeatureId, microserviceIds[_randomProvider.GetRandom(0, microserviceIds.Length)]);
                newGenes.Add(clonedGene);
            }
            return(deployment.UpdateGenes(newGenes));
        }
예제 #4
0
        public void GetHashCode_Returns_Same_ForIdenticalGene()
        {
            var featureIdentifier      = new FeatureIdentifier("a");
            var microserviceIdentifier = new MicroserviceIdentifier("b");

            var sot = new DeploymentGene(featureIdentifier, microserviceIdentifier);

            var sameFeatureIdentifier      = new FeatureIdentifier("a");
            var sameMicroserviceIdentifier = new MicroserviceIdentifier("b");

            var same = new DeploymentGene(sameFeatureIdentifier, sameMicroserviceIdentifier);

            Assert.AreEqual(sot.GetHashCode(), same.GetHashCode());
        }
예제 #5
0
        public void UpdateGene_GeneToOtherMicroservice_Returns_Correct_Genes()
        {
            var featureModel = A.Fake <FeatureModel>();
            var genes        = new[]
            {
                new DeploymentGene(new FeatureIdentifier("a"), new MicroserviceIdentifier("a")),
                new DeploymentGene(new FeatureIdentifier("b"), new MicroserviceIdentifier("b"))
            };
            var sot  = new DeploymentChromosome(featureModel, genes);
            var gene = new DeploymentGene(new FeatureIdentifier("a"), new MicroserviceIdentifier("b"));

            sot = (DeploymentChromosome)sot.UpdateGene(gene);
            Assert.AreEqual(genes[0], sot.GetGene(new FeatureIdentifier("a")));
            Assert.AreEqual(new DeploymentGene(new FeatureIdentifier("b"), new MicroserviceIdentifier("a")), sot.GetGene(new FeatureIdentifier("b")));
        }
예제 #6
0
            public IEnumerator <TestCaseData> GetEnumerator()
            {
                var featureId      = new FeatureIdentifier("a");
                var microserviceId = new MicroserviceIdentifier("b");
                var gene           = new DeploymentGene(featureId, microserviceId);

                yield return(new TestCaseData(gene, gene).Returns(true));

                yield return(new TestCaseData(gene, new DeploymentGene(featureId, microserviceId)).Returns(true));

                yield return(new TestCaseData(gene, new DeploymentGene(featureId, new MicroserviceIdentifier("c"))).Returns(false));

                yield return(new TestCaseData(gene, new DeploymentGene(new FeatureIdentifier("b"), microserviceId)).Returns(false));

                yield return(new TestCaseData(gene, null).Returns(false));

                yield return(new TestCaseData(gene, 3).Returns(false));
            }
예제 #7
0
            public IEnumerator <TestCaseData> GetEnumerator()
            {
                var featureModel = new FeatureModel(new[]
                {
                    new Feature(new FeatureIdentifier("a"), "a", new[]
                    {
                        new Property(new PropertyIdentifier("p1"), "p1")
                    })
                }, Enumerable.Empty <PropertyRelation>());
                var gene1 = new DeploymentGene(new FeatureIdentifier("a"), new MicroserviceIdentifier("b"));
                var gene2 = new DeploymentGene(new FeatureIdentifier("b"), new MicroserviceIdentifier("b"));

                var chromosome = new DeploymentChromosome(featureModel, new[] { gene1, gene2 });

                var same = new DeploymentChromosome(featureModel, new[] { gene1, gene2 });

                yield return(new TestCaseData(chromosome, chromosome).Returns(true));

                yield return(new TestCaseData(chromosome, same).Returns(true));

                yield return(new TestCaseData(chromosome, null).Returns(false));

                yield return(new TestCaseData(chromosome, 3).Returns(false));
            }
예제 #8
0
 public bool Equals_Returns_Correctly(DeploymentGene gene, object other)
 {
     return(gene.Equals(other));
 }