public void Test1()
        {
            var cci2     = new CciModuleSource(@"C:\PLIKI\VisualMutator\testprojects\MiscUtil\MiscUtil.UnitTests\bin\Debug\MiscUtil.dll");
            var copied21 = cci2.CreateCopier().Copy(cci2.Modules.Single().Module);
            var copied22 = cci2.CreateCopier().Copy(cci2.Modules.Single().Module);

            var debug1 = new DebugOperatorCodeVisitor();
            var debug2 = new DebugOperatorCodeVisitor();

            new DebugCodeTraverser(debug1).Traverse(copied21);
            new DebugCodeTraverser(debug2).Traverse(copied22);
            // File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\tree1" + ".txt", debug1.ToStringBasicVisit(), Encoding.ASCII);
            // File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\tree2" + ".txt", debug2.ToStringBasicVisit(), Encoding.ASCII);

            //            var sb = new StringBuilder();
            //            foreach (var diff1 in diff)
            //            {
            //                sb.AppendLine(diff1.ToString());
            //            }
            //            File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\treediff", sb.ToString());
            //

            //            foreach (var

            //   trace(@"C:\PLIKI\VisualMutator\testprojects\MiscUtil\MiscUtil.UnitTests\bin\Debug\MiscUtil.dll");
            //            trace(@"C:\PLIKI\VisualMutator\Projekty do testów\MiscUtil\MiscUtil.UnitTests\bin\Debug\MiscUtil.UnitTests.dll");
            //            trace(@"C:\Users\Arego\AppData\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache\xr5pbts3.ul3\itvv4cbi.0l3\VisualMutator.dll");
            //            trace(@"C:\PLIKI\Programowanie\C#\CREAM\Cream\bin\x86\Debug\TestRunnerNunit.dll");
            //        trace(@"C:\PLIKI\Programowanie\C#\CREAM\Cream\bin\x86\Debug\MutationTools.dll");
        }
        private List<MethodIdentifier> FindCoveringTests(CciModuleSource module, ICodePartsMatcher targetsMatcher)
        {
            _log.Debug("Scanning " + module.Module.Name + " for selected covering tests. ");
            var visitor = new CoveringTestsVisitor(targetsMatcher);

            var traverser = new CodeTraverser
            {
                PreorderVisitor = visitor
            };
            
            traverser.Traverse(module.Decompile(module.Module));
            _log.Debug("Finished scanning module"+ module.Module.Name + ". Found " + visitor.FoundTests.Count+
                ". Scanned total: " + visitor.ScannedMethods + " methods and "+
                visitor.ScannedMethodCalls+" method calls.");

            _log.Debug("Listing found tests: ");
            foreach (var methodIdentifier in visitor.FoundTests)
            {
                _log.Debug("Test: "+ methodIdentifier);
            }

            if (visitor.IsChoiceError)
            {
                throw new TestWasSelectedToMutateException();
            }
            return visitor.FoundTests.ToList();
        } 
Exemplo n.º 3
0
        public May<TestsLoadContext> LoadTests(string assemblyPath)
        {
            _log.Info("MsTest loading tests...");
            var cci = new CciModuleSource(assemblyPath);

            var visitor = new MsTestTestsVisitor();
            var traverser = new CodeTraverser
            {
                PreorderVisitor = visitor
            };

            traverser.Traverse(cci.Module.Module);

            var classes = visitor.Classes.Where(c => c.Children.Count != 0).ToList();
            if(classes.Count != 0)
            {
                _log.Info("Tests loaded ("+ classes.Count + " classes).");
                return new May<TestsLoadContext>(new TestsLoadContext(FrameWorkName, classes));
            }
            else
            {
                _log.Info("No tests found.");
                return May.NoValue;
            }
        }
        public void Test0()
        {
            var cci     = new CciModuleSource(TestProjects.DsaPath);
            var cci2    = new CciModuleSource(TestProjects.DsaPath);
            var type    = cci.Modules.Single().Module.GetAllTypes().Single(t => t.Name.Value == "Deque") as NamedTypeDefinition;
            var method  = type.Methods.Single(m => m.Name.Value == "EnqueueFront");
            var choices = new MutationSessionChoices
            {
                Filter = new MutationFilter(
                    new List <TypeIdentifier>(),
                    new MethodIdentifier(method).InList()),
                SelectedOperators = new AOR_ArithmeticOperatorReplacement().InList <IMutationOperator>(),
            };

            var exec      = new MutationExecutor(null, choices, null);
            var container = new MutantsContainer(exec, new OriginalCodebase(cci.InList(), new List <string>()), new OptionsModel());
            IList <AssemblyNode> assemblies = container.InitMutantsForOperators(ProgressCounter.Inactive());

            var mut = assemblies.Cast <CheckedNode>()
                      .SelectManyRecursive(n => n.Children ?? new NotifyingCollection <CheckedNode>())
                      .OfType <Mutant>().First();

            var sourceMethod = type.Methods.Single(m => m.Name.Value == "EnqueueFront");

            MutationResult executeMutation = exec.ExecuteMutation(mut, cci2).Result;

            //       var viss = new Viss(cci2.Host, sourceMethod);
            //     IModule newMod = viss.Rewrite(executeMutation.MutatedModules.Modules.Single().Module);

            cci2.ReplaceWith(executeMutation.MutatedModules.Modules.Single().Module);

            MutationResult executeMutation2 = exec.ExecuteMutation(mut, cci2).Result;
        }
Exemplo n.º 5
0
        public Task <CciModuleSource> GetWhiteSourceAsync(string moduleName)
        {
            CciModuleSource cciModuleSource = TryTake(moduleName);

            if (cciModuleSource != null)
            {
                _log.Debug("Whitecache#" + PrintCacheState(_moduleNameToFileName[moduleName]) + "Taken immediately: " + cciModuleSource.Guid);
                return(Task.FromResult(cciModuleSource));
            }
            else
            {
                var client = new WhiteClient(moduleName);
                if (_error != null)
                {
                    client.Tcs.SetException(_error);
                    _log.Debug("Whitecache#" + PrintCacheState(_moduleNameToFileName[moduleName]) + "Error occurred.");
                }
                else
                {
                    _clients.Enqueue(client);
                    _log.Debug("Whitecache#" + PrintCacheState(_moduleNameToFileName[moduleName]) + "Enqueued waiting client.");
                }
                return(client.Tcs.Task);
            }
        }
Exemplo n.º 6
0
        public May <TestsLoadContext> LoadTests(string assemblyPath)
        {
            _log.Info("XUnit loading tests...");
            var cci = new CciModuleSource(assemblyPath);

            var visitor   = new XUnitTestsVisitor();
            var traverser = new CodeTraverser
            {
                PreorderVisitor = visitor
            };

            traverser.Traverse(cci.Module.Module);

            var classes = visitor.Classes.Where(c => c.Children.Count != 0).ToList();

            if (classes.Count != 0)
            {
                _log.Info("Tests loaded (" + classes.Count + " classes).");
                return(new May <TestsLoadContext>(new TestsLoadContext(FrameWorkName, classes)));
            }
            else
            {
                _log.Info("No tests found.");
                return(May.NoValue);
            }
        }
Exemplo n.º 7
0
        private List <MethodIdentifier> FindCoveringTests(CciModuleSource module, ICodePartsMatcher targetsMatcher)
        {
            _log.Debug("Scanning " + module.Module.Name + " for selected covering tests. ");
            var visitor = new CoveringTestsVisitor(targetsMatcher);

            var traverser = new CodeTraverser
            {
                PreorderVisitor = visitor
            };

            traverser.Traverse(module.Decompile(module.Module));
            _log.Debug("Finished scanning module" + module.Module.Name + ". Found " + visitor.FoundTests.Count +
                       ". Scanned total: " + visitor.ScannedMethods + " methods and " +
                       visitor.ScannedMethodCalls + " method calls.");

            _log.Debug("Listing found tests: ");
            foreach (var methodIdentifier in visitor.FoundTests)
            {
                _log.Debug("Test: " + methodIdentifier);
            }

            if (visitor.IsChoiceError)
            {
                throw new TestWasSelectedToMutateException();
            }
            return(visitor.FoundTests.ToList());
        }
Exemplo n.º 8
0
 public VisualCodeTraverser(MutationFilter filter, VisualCodeVisitor visitor, CciModuleSource module)
 {
     _filter         = filter;
     _visitor        = visitor;
     _module         = module;
     PreorderVisitor = visitor;
     _methodBodies   = new Dictionary <IMethodBody, SourceMethodBody>();
 }
 public VisualCodeTraverser(MutationFilter filter, VisualCodeVisitor visitor, CciModuleSource module)
 {
     _filter = filter;
     _visitor = visitor;
     _module = module;
     PreorderVisitor = visitor;
     _methodBodies = new Dictionary<IMethodBody, SourceMethodBody>();
 }
Exemplo n.º 10
0
        public void ReadWriteTestAutoMapper()
        {
            var cci = new CciModuleSource(TestProjects.AutoMapper);

            using (var file = File.OpenWrite(@"C:\PLIKI\VisualMutator\testprojects\Automapper-Integration-Tests\readwrite\AutoMapper.dll"))
            {
                cci.WriteToStream(cci.Module, file, file.Name);
            }
        }
Exemplo n.º 11
0
        public async Task <MutationResult> ExecuteMutation(Mutant mutant, CciModuleSource moduleSource)
        {
            var type   = new TypeIdentifier((INamedTypeDefinition)mutant.MutationTarget.ProcessingContext.Type.Object);
            var method = new MethodIdentifier((IMethodDefinition)mutant.MutationTarget.ProcessingContext.Method.Object);
            var filter = new MutationFilter(type.InList(), method.InList());

            _log.Debug("ExecuteMutation of: " + type + " - " + method);
            IMutationOperator mutationOperator = mutant.MutationTarget.OperatorId == null ? new IdentityOperator() :
                                                 _mutOperators.Single(m => mutant.MutationTarget.OperatorId == m.Info.Id);
            var cci = moduleSource;

            try
            {
                _log.Info("Execute mutation of " + mutant.MutationTarget + " contained in " + mutant.MutationTarget.MethodRaw + " modules. ");
                var mutatedModules = new List <IModuleInfo>();
                var module         = moduleSource.Modules.Single();

                var visitorBack = new VisualCodeVisitorBack(mutant.MutationTarget.InList(),
                                                            _sharedTargets.GetValues(mutationOperator, returnEmptySet: true),
                                                            module.Module, mutationOperator.Info.Id);
                var traverser2 = new VisualCodeTraverser(_filter, visitorBack, moduleSource);
                traverser2.Traverse(module.Module);
                visitorBack.PostProcess();
                var operatorCodeRewriter = mutationOperator.CreateRewriter();

                var rewriter = new VisualCodeRewriter(cci.Host, visitorBack.TargetAstObjects,
                                                      visitorBack.SharedAstObjects, _filter, operatorCodeRewriter, traverser2);

                operatorCodeRewriter.MutationTarget =
                    new UserMutationTarget(mutant.MutationTarget.Variant.Signature, mutant.MutationTarget.Variant.AstObjects);


                operatorCodeRewriter.NameTable     = cci.Host.NameTable;
                operatorCodeRewriter.Host          = cci.Host;
                operatorCodeRewriter.Module        = module.Module;
                operatorCodeRewriter.OperatorUtils = _operatorUtils;
                operatorCodeRewriter.Initialize();

                var rewrittenModule = rewriter.Rewrite(module.Module);

                rewriter.CheckForUnfoundObjects();

                mutant.MutationTarget.Variant.AstObjects = null; //TODO: avoiding leaking memory. refactor
                mutatedModules.Add(new ModuleInfo(rewrittenModule, ""));

                var result = new MutationResult(mutant, cci, null,
                                                mutant.MutationTarget.MethodMutated);
                mutant.MutationTarget.MethodMutated = null; //TODO: avoiding leaking memory. refactor
                return(result);
            }
            catch (Exception e)
            {
                throw new MutationException("CreateMutants failed on operator: {0}.".Formatted(mutationOperator.Info.Name), e);
            }
        }
Exemplo n.º 12
0
        public void IntegrationTestingMiscUtilLight()
        {
            string filePath      = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath), @"..\..\..\..\Tests\SampleTestProjectsForTestDiscoveryAndExecution\SampleLogicNunit3Tests\bin\SampleLogic.dll"));
            string filePathTests = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath), @"..\..\..\..\Tests\SampleTestProjectsForTestDiscoveryAndExecution\SampleLogicNunit3Tests\bin\SampleLogicNunit3Tests.dll"));

            var cci     = new CciModuleSource(filePath);
            var choices = new MutationSessionChoices();
            var tt      = cci.Module.Module.GetAllTypes();
            //  var type = (NamedTypeDefinition)cci.Module.Module.GetAllTypes().Single(t => t.Name.Value == "Range");
            // var method = new MethodIdentifier(type.Methods.First(m => m.Name.Value == "Contains"));
            MethodIdentifier method = null;

            choices.SelectedOperators.Add(new IdentityOperator2());
            choices.Filter = method == null?MutationFilter.AllowAll() :
                                 new MutationFilter(
                                     new List <TypeIdentifier>(),
                                     method.InList());

            var options = new OptionsModel();
            var muexe   = new MutationExecutor(options, choices, null);
            var mucon   = new MutantsContainer(muexe, new OriginalCodebase(cci.InList()), new OptionsModel());
            var nodes   = mucon.InitMutantsForOperators(ProgressCounter.Inactive());

            Mutant mutant = nodes.Cast <CheckedNode>()
                            .SelectManyRecursive(n => n.Children ?? new NotifyingCollection <CheckedNode>())
                            .OfType <Mutant>().First();//.Take(4);

            var cciWhite = new CciModuleSource(filePath);
            var resu     = muexe.ExecuteMutation(mutant, cciWhite).Result;

            using (var file = File.OpenWrite(filePath))
            {
                resu.MutatedModules.WriteToStream(resu.MutatedModules.Modules.Single(), file, filePath);
            }

            var runContext = new NUnitTestsRunContext(
                options,
                _kernel.Get <IProcesses>(),
                _kernel.Get <CommonServices>(),
                new NUnitResultsParser(),
                TestProjects.NUnitConsolePath,
                filePathTests,
                new TestsSelector());

            var testResult = runContext.RunTests().Result;

            var count = testResult.ResultMethods
                        .GroupBy(t => t.State)
                        .ToDictionary(t => t.Key);
            var countStrings = count.Select(pair => pair.Key.ToString() + ": " + pair.Value.Count());

            _log.Info(string.Format("All test results: " + string.Join(" ", countStrings)));
            count[TestNodeState.Failure].Count().ShouldEqual(0);
        }
Exemplo n.º 13
0
        public void IntegrationTestingAutoMapper()
        {
            var paths = new[] {
                TestProjects.AutoMapper,
                TestProjects.AutoMapperNet4,
                TestProjects.AutoMapperTests
            }.Select(_ => _.ToFilePathAbs()).ToList();

            var cci      = new CciModuleSource(TestProjects.AutoMapper);
            var cci1     = new CciModuleSource(TestProjects.AutoMapperNet4);
            var cciTests = new CciModuleSource(TestProjects.AutoMapperTests);

            var original = new OriginalCodebase(new List <CciModuleSource> {
                cci, cci1, cciTests
            });
            var toMutate = new List <string> {
                TestProjects.AutoMapper,
                TestProjects.AutoMapperNet4
            };

            var oper = new IdentityOperator2().InList <IMutationOperator>();

            var mutants = SetupMutations(original, paths, toMutate, oper);

            var vis = _kernel.Get <ICodeVisualizer>();


            var muma = _kernel.Get <MutantMaterializer>();


            IObserver <SessionEventArgs> sub = new ReplaySubject <SessionEventArgs>();

            foreach (var mutant in mutants)
            {
                //  var copy = new CciModuleSource(TestProjects.MiscUtil);
                //    MutationResult result = exec.ExecuteMutation(mutant, copy).Result;
                var muma2 = _kernel.Get <IFactory <TestingMutant> >().CreateWithParams(sub, mutant);


                var r          = muma2.RunAsync().Result;
                var namespaces = _kernel.Get <TestsContainer>().CreateMutantTestTree(mutant);
                var meth       = namespaces.Cast <CheckedNode>()
                                 .SelectManyRecursive(n => n.Children, leafsOnly: true).OfType <TestNodeMethod>();

                meth.Count(m => m.State == TestNodeState.Failure).ShouldEqual(0);
                //  var storedMutantInfo = muma.StoreMutant(mutant).Result;

                //  RunTestsForMutant(_choices.MutantsTestingOptions, _storedMutantInfo);

                //   CodeWithDifference differenceListing = vis.CreateDifferenceListing(CodeLanguage.CSharp, mutant, result).Result;
                //     differenceListing.LineChanges.Count.ShouldEqual(2);
            }
        }
Exemplo n.º 14
0
        public void IntegrationTestingMiscUtil()
        {
            var paths = new[] {
                TestProjects.MiscUtil,
                TestProjects.MiscUtilTests
            }.Select(_ => _.ToFilePathAbs()).ToList();

            var cci      = new CciModuleSource(TestProjects.MiscUtil);
            var cciTests = new CciModuleSource(TestProjects.MiscUtilTests);

            var toMutate = TestProjects.MiscUtil.InList();
            var original = new OriginalCodebase(new List <CciModuleSource> {
                cci, cciTests
            });

            var type   = (NamedTypeDefinition)cci.Module.Module.GetAllTypes().Single(t => t.Name.Value == "Range");
            var method = type.Methods.First(m => m.Name.Value == "Contains");

            var oper = new ROR_RelationalOperatorReplacement().InList <IMutationOperator>();

            var mutants = SetupMutations(original, paths, toMutate, oper, new MethodIdentifier(method));

            var vis = _kernel.Get <ICodeVisualizer>();


            var muma = _kernel.Get <MutantMaterializer>();


            IObserver <SessionEventArgs> sub = new ReplaySubject <SessionEventArgs>();

            foreach (var mutant in mutants)
            {
                //  var copy = new CciModuleSource(TestProjects.MiscUtil);
                //    MutationResult result = exec.ExecuteMutation(mutant, copy).Result;
                var muma2 = _kernel.Get <IFactory <TestingMutant> >().CreateWithParams(sub, mutant);


                var r          = muma2.RunAsync().Result;
                var namespaces = _kernel.Get <TestsContainer>().CreateMutantTestTree(mutant);
                var meth       = namespaces.Cast <CheckedNode>()
                                 .SelectManyRecursive(n => n.Children, leafsOnly: true).OfType <TestNodeMethod>();

                //   vis.CreateDifferenceListing()
                meth.Count(m => m.State == TestNodeState.Failure).ShouldBeGreaterThan(0);
                //  var storedMutantInfo = muma.StoreMutant(mutant).Result;

                //  RunTestsForMutant(_choices.MutantsTestingOptions, _storedMutantInfo);

                //   CodeWithDifference differenceListing = vis.CreateDifferenceListing(CodeLanguage.CSharp, mutant, result).Result;
                //     differenceListing.LineChanges.Count.ShouldEqual(2);
            }
        }
Exemplo n.º 15
0
        public void Whole()
        {
            string ConsolePath =
                @"C:\USERS\AREGO\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\12.0EXP\EXTENSIONS\PIOTRTRZPIL\VISUALMUTATOR\2.0.8\xunitconsole\xunit.console.exe";
            string BasePath = @"C:\PLIKI\VisualMutator\testprojects\Automapper-Integration-Tests\";
            string unitestspath = BasePath + @"AutoMapper.dll";
            string unitestsdestination = BasePath + @"Debug\AutoMapper.dll";
            string unitestsdestinationPdb = BasePath + @"Debug\AutoMapper.pdb";
            string unitests = BasePath + @"Debug\AutoMapper.UnitTests.Net4.dll";
            var cci = new CciModuleSource(unitestspath);

          //  var rewr = new XRewriter(cci.Host);
           // rewr.Rewrite(cci.Module.Module);


            File.Delete(unitestsdestination);
            File.Delete(unitestsdestinationPdb);
            using (var file = File.OpenWrite(unitestsdestination))
            {
                cci.WriteToStream(cci.Module, file, unitestsdestination);
            }

      
            _log.Info("Running: " + ConsolePath.InQuotes() + " " + (unitests).InQuotes());
  
            var procResult = new Processes().RunHiddenAsync(ConsolePath, unitests);

            _log.Debug(procResult.Result.StandardOutput.Concat(procResult.Result.StandardError).Aggregate((a,b)=>a+"\n"+b));


//
//            var cci2 = new CciModuleSource(unitestspath);
//            var rewr = new XRewriter(cci2.Host);
//            
//            rewr.Rewrite(cci2.Module.Module);
//
//            File.Delete(unitestsdestination);
//            File.Delete(unitestsdestinationPdb);
//            using (var file = File.OpenWrite(unitestsdestination))
//            {
//                cci2.WriteToStream(cci2.Module, file, unitestsdestination);
//            }
//
//
//            _log.Info("Running: " + ConsolePath.InQuotes() + " " + arg);
//           
//            var procResult2 = new Processes().RunHiddenAsync(ConsolePath, unitestsdestination);
//            _log.Debug(procResult2.Result.StandardOutput.Concat(procResult2.Result.StandardError).Aggregate((a, b) => a + "\n" + b));

        }
Exemplo n.º 16
0
        public void IntegrationTestingMiscUtilLight()
        {
            var cci = new CciModuleSource(TestProjects.MiscUtil);
            var choices = new MutationSessionChoices();
            var tt = cci.Module.Module.GetAllTypes();
          //  var type = (NamedTypeDefinition)cci.Module.Module.GetAllTypes().Single(t => t.Name.Value == "Range");
           // var method = new MethodIdentifier(type.Methods.First(m => m.Name.Value == "Contains"));
            MethodIdentifier method = null;
            choices.SelectedOperators.Add(new IdentityOperator2());
            choices.Filter = method == null ? MutationFilter.AllowAll() :
                                 new MutationFilter(
                                  new List<TypeIdentifier>(),
                                  method.InList());

            var options = new OptionsModel();
            var muexe = new MutationExecutor(options, choices, null);
            var mucon = new MutantsContainer(muexe, new OriginalCodebase(cci.InList()));
            var nodes = mucon.InitMutantsForOperators(ProgressCounter.Inactive());
            Mutant mutant = nodes.Cast<CheckedNode>()
              .SelectManyRecursive(n => n.Children ?? new NotifyingCollection<CheckedNode>())
              .OfType<Mutant>().First();//.Take(4);
            var cciWhite = new CciModuleSource(TestProjects.MiscUtil);
            var resu = muexe.ExecuteMutation(mutant, cciWhite).Result;
            string filePath = @"C:\PLIKI\VisualMutator\testprojects\MiscUtil-Integration-Tests\TestGround\MiscUtil.dll";
            string filePathTests = @"C:\PLIKI\VisualMutator\testprojects\MiscUtil-Integration-Tests\TestGround\MiscUtil.UnitTests.dll";
            using (var file = File.OpenWrite(filePath))
            {
                resu.MutatedModules.WriteToStream(resu.MutatedModules.Modules.Single(), file, filePath);
            }

            var runContext = new NUnitTestsRunContext(
                options,
                _kernel.Get<IProcesses>(),
                _kernel.Get<CommonServices>(),
                new NUnitResultsParser(),
                TestProjects.NUnitConsolePath,
                filePathTests,
                new TestsSelector());
            var testResult = runContext.RunTests().Result;
            
            var count = testResult.ResultMethods
                .GroupBy(t => t.State)
                .ToDictionary(t => t.Key);
            var countStrings = count.Select(pair => pair.Key.ToString() + ": " + pair.Value.Count());
            _log.Info(string.Format("All test results: " + string.Join(" ", countStrings)));
            count[TestNodeState.Failure].Count().ShouldEqual(0);
           
        }
Exemplo n.º 17
0
        public void Whole()
        {
            string ConsolePath =
                @"C:\USERS\AREGO\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\12.0EXP\EXTENSIONS\PIOTRTRZPIL\VISUALMUTATOR\2.0.8\xunitconsole\xunit.console.exe";
            string BasePath               = @"C:\PLIKI\VisualMutator\testprojects\Automapper-Integration-Tests\";
            string unitestspath           = BasePath + @"AutoMapper.dll";
            string unitestsdestination    = BasePath + @"Debug\AutoMapper.dll";
            string unitestsdestinationPdb = BasePath + @"Debug\AutoMapper.pdb";
            string unitests               = BasePath + @"Debug\AutoMapper.UnitTests.Net4.dll";
            var    cci = new CciModuleSource(unitestspath);

            //  var rewr = new XRewriter(cci.Host);
            // rewr.Rewrite(cci.Module.Module);

            File.Delete(unitestsdestination);
            File.Delete(unitestsdestinationPdb);
            using (var file = File.OpenWrite(unitestsdestination))
            {
                cci.WriteToStream(cci.Module, file, unitestsdestination);
            }

            _log.Info("Running: " + ConsolePath.InQuotes() + " " + (unitests).InQuotes());

            var procResult = new Processes().RunHiddenAsync(ConsolePath, unitests);

            _log.Debug(procResult.Result.StandardOutput.Concat(procResult.Result.StandardError).Aggregate((a, b) => a + "\n" + b));

            //
            //            var cci2 = new CciModuleSource(unitestspath);
            //            var rewr = new XRewriter(cci2.Host);
            //
            //            rewr.Rewrite(cci2.Module.Module);
            //
            //            File.Delete(unitestsdestination);
            //            File.Delete(unitestsdestinationPdb);
            //            using (var file = File.OpenWrite(unitestsdestination))
            //            {
            //                cci2.WriteToStream(cci2.Module, file, unitestsdestination);
            //            }
            //
            //
            //            _log.Info("Running: " + ConsolePath.InQuotes() + " " + arg);
            //
            //            var procResult2 = new Processes().RunHiddenAsync(ConsolePath, unitestsdestination);
            //            _log.Debug(procResult2.Result.StandardOutput.Concat(procResult2.Result.StandardError).Aggregate((a, b) => a + "\n" + b));
        }
Exemplo n.º 18
0
        private void TryAdd(ProjectFilesClone item1)
        {
            foreach (var whiteCach in _whiteCaches)
            {
                if (whiteCach.Value.Count < _maxCount)
                {
                    var guid = Guid.NewGuid();
                    _log.Debug("Whitecache#" + PrintCacheState(whiteCach.Key) + "Add started.");
                    var filePath = item1.Assemblies.Single(_ => _.FileName == whiteCach.Key);
                    var cci      = new CciModuleSource(filePath.Path);
                    cci.Guid = guid;

                    whiteCach.Value.Add(cci);
                    _log.Debug("Whitecache#" + PrintCacheState(whiteCach.Key) + "Add finished: " + guid);
                }
            }
        }
Exemplo n.º 19
0
        private void NotifyClients()
        {
            WhiteClient client;

            if (_clients.TryDequeue(out client))
            {
                CciModuleSource cciModuleSource = TryTake(client.Key);
                if (cciModuleSource != null)
                {
                    _log.Debug("Whitecache#" + PrintCacheState(_moduleNameToFileName[client.Key]) + "Source taken later: " + cciModuleSource.Guid);
                    client.Tcs.TrySetResult(cciModuleSource);
                }
                else
                {
                    _clients.Enqueue(client);
                }
            }
        }
Exemplo n.º 20
0
        public MultiDictionary <IMutationOperator, MutationTarget> FindTargets(CciModuleSource module, ProgressCounter subProgress)
        {
            _log.Info("Finding targets for module: " + module.Module.Name);
            _log.Info("Using mutation operators: " + _mutOperators.Select(_ => _.Info.Id)
                      .MayAggregate((a, b) => a + "," + b).Else("None"));

            var mergedTargets = new MultiDictionary <IMutationOperator, MutationTarget>();

            _sharedTargets = new MultiDictionary <IMutationOperator, MutationTarget>();
            subProgress.Initialize(_mutOperators.Count);
            foreach (var mutationOperator in _mutOperators)
            {
                try
                {
                    subProgress.Progress();
                    var ded = mutationOperator.CreateVisitor();
                    IOperatorCodeVisitor operatorVisitor = ded;
                    operatorVisitor.Host          = module.Host;
                    operatorVisitor.OperatorUtils = _operatorUtils;
                    operatorVisitor.Initialize();

                    var visitor = new VisualCodeVisitor(mutationOperator.Info.Id, operatorVisitor, module.Module.Module);

                    var traverser = new VisualCodeTraverser(_filter, visitor, module);

                    traverser.Traverse(module.Module.Module);
                    visitor.PostProcess();

                    IEnumerable <MutationTarget> mutations = LimitMutationTargets(visitor.MutationTargets);


                    mergedTargets.Add(mutationOperator, new HashSet <MutationTarget>(mutations));
                    _sharedTargets.Add(mutationOperator, new HashSet <MutationTarget>(visitor.SharedTargets));
                }
                catch (Exception e)
                {
                    _svc.Logging.ShowError("Finding targets operation failed in operator: {0}. Exception: {1}".Formatted(mutationOperator.Info.Name, e.ToString()));
                    //throw new MutationException("Finding targets operation failed in operator: {0}.".Formatted(mutationOperator.Info.Name), e);
                }
            }
            return(mergedTargets);
        }
Exemplo n.º 21
0
        public MultiDictionary<IMutationOperator, MutationTarget> FindTargets(CciModuleSource module, ProgressCounter subProgress)
        {
            _log.Info("Finding targets for module: " + module.Module.Name);
            _log.Info("Using mutation operators: " + _mutOperators.Select(_ => _.Info.Id)
                .MayAggregate((a, b) => a + "," + b).Else("None"));

            var mergedTargets = new MultiDictionary<IMutationOperator, MutationTarget>();
            _sharedTargets = new MultiDictionary<IMutationOperator, MutationTarget>();
            subProgress.Initialize(_mutOperators.Count);
            foreach (var mutationOperator in _mutOperators)
            {
                try
                {
                    subProgress.Progress();
                    var ded = mutationOperator.CreateVisitor();
                    IOperatorCodeVisitor operatorVisitor = ded;
                    operatorVisitor.Host = module.Host;
                    operatorVisitor.OperatorUtils = _operatorUtils;
                    operatorVisitor.Initialize();

                    var visitor = new VisualCodeVisitor(mutationOperator.Info.Id, operatorVisitor, module.Module.Module);

                    var traverser = new VisualCodeTraverser(_filter, visitor, module);

                    traverser.Traverse(module.Module.Module);
                    visitor.PostProcess();

                    IEnumerable<MutationTarget> mutations = LimitMutationTargets(visitor.MutationTargets);


                    mergedTargets.Add(mutationOperator, new HashSet<MutationTarget>(mutations));
                    _sharedTargets.Add(mutationOperator, new HashSet<MutationTarget>(visitor.SharedTargets));

                }
                catch (Exception e)
                {
                    _svc.Logging.ShowError("Finding targets operation failed in operator: {0}. Exception: {1}".Formatted(mutationOperator.Info.Name, e.ToString()));
                    //throw new MutationException("Finding targets operation failed in operator: {0}.".Formatted(mutationOperator.Info.Name), e);
                }
            }
            return mergedTargets;
        }
Exemplo n.º 22
0
        private void InitializeModuleNames()
        {
            ProjectFilesClone projectFilesClone = _paths.Take();

            foreach (var path in projectFilesClone.Assemblies)
            {
                var cci = new CciModuleSource(path.Path);

                _moduleNameToFileName.Add(cci.Modules.Single().Name, path.FileName);
                _fileNameToModuleName.Add(path.FileName, cci.Modules.Single().Name);
                var queue = new BlockingCollection <CciModuleSource>(20)
                {
                    cci
                };
                _whiteCaches.TryAdd(path.FileName, queue);
                _log.Debug("Whitecache#" + PrintCacheState(path.FileName) + "Initializing module name.");
            }
            _paths.Add(projectFilesClone);
            _initialized = true;
            NotifyClients();
        }
Exemplo n.º 23
0
        public void IntegrationTestMutation()
        {
            var cci = new CciModuleSource(TestProjects.MiscUtil);

            var original = new OriginalCodebase(cci.InList());
            var type     =
                cci.Modules.Single().Module.GetAllTypes().Single(t => t.Name.Value == "Adler32") as NamedTypeDefinition;
            var method  = type.Methods.First(m => m.Name.Value == "ComputeChecksum");
            var choices = new MutationSessionChoices
            {
                Filter = new MutationFilter(
                    new List <TypeIdentifier>(),
                    new MethodIdentifier(method).InList()),
                SelectedOperators = new LOR_LogicalOperatorReplacement().InList <IMutationOperator>(),
            };

            var exec      = new MutationExecutor(new OptionsModel(), choices, null);
            var container = new MutantsContainer(exec, original, new OptionsModel());
            IList <AssemblyNode> assemblies = container.InitMutantsForOperators(ProgressCounter.Inactive());

            var mutants = assemblies.Cast <CheckedNode>()
                          .SelectManyRecursive(n => n.Children ?? new NotifyingCollection <CheckedNode>())
                          .OfType <Mutant>();

            var diff = new CodeDifferenceCreator();
            var vis  = new CodeVisualizer(original, diff);

            foreach (var mutant in mutants)
            {
                var                copy              = new CciModuleSource(TestProjects.MiscUtil);
                MutationResult     result            = exec.ExecuteMutation(mutant, copy).Result;
                CodeWithDifference differenceListing =
                    vis.CreateDifferenceListing(CodeLanguage.CSharp, mutant, result).Result;
                differenceListing.LineChanges.Count.ShouldEqual(2);
            }
        }
Exemplo n.º 24
0
 private void TryAdd(ProjectFilesClone item1)
 {
     foreach (var whiteCach in _whiteCaches)
     {
         if (whiteCach.Value.Count < _maxCount)
         {
             var guid = Guid.NewGuid();
             _log.Debug("Whitecache#"+ PrintCacheState(whiteCach.Key) + "Add started.");
             var filePath = item1.Assemblies.Single(_ => _.FileName == whiteCach.Key);
             var cci = new CciModuleSource(filePath.Path);
             cci.Guid = guid;
             
             whiteCach.Value.Add(cci);
             _log.Debug("Whitecache#" + PrintCacheState(whiteCach.Key) + "Add finished: " + guid);
         }
     }
 }
Exemplo n.º 25
0
 private void InitializeModuleNames()
 {
     ProjectFilesClone projectFilesClone = _paths.Take();
     foreach (var path in projectFilesClone.Assemblies)
     {
         var cci = new CciModuleSource(path.Path);
         
         _moduleNameToFileName.Add(cci.Modules.Single().Name, path.FileName);
         _fileNameToModuleName.Add(path.FileName, cci.Modules.Single().Name);
         var queue = new BlockingCollection<CciModuleSource>(20) {cci};
         _whiteCaches.TryAdd(path.FileName, queue);
         _log.Debug("Whitecache#" + PrintCacheState(path.FileName) + "Initializing module name.");
     }
     _paths.Add(projectFilesClone);
     _initialized = true;
     NotifyClients();
     
 }
Exemplo n.º 26
0
 public void ReadWriteTestAutoMapper()
 {
     var cci = new CciModuleSource(TestProjects.AutoMapper);
     using (var file = File.OpenWrite(@"C:\PLIKI\VisualMutator\testprojects\Automapper-Integration-Tests\readwrite\AutoMapper.dll"))
     {
         cci.WriteToStream(cci.Module, file, file.Name);
     }
     
 }
Exemplo n.º 27
0
        public async Task<MutationResult> ExecuteMutation(Mutant mutant, CciModuleSource moduleSource, CciModuleSource moduleSource2)
        {
            /*var type = new TypeIdentifier((INamedTypeDefinition) mutant.MutationTarget.ProcessingContext.Type.Object);
            var type2 = new TypeIdentifier((INamedTypeDefinition)mutant.MutationTarget2.ProcessingContext.Type.Object);//
            var method = new MethodIdentifier((IMethodDefinition) mutant.MutationTarget.ProcessingContext.Method.Object);
            var method2 = new MethodIdentifier((IMethodDefinition)mutant._mutationTarget2.ProcessingContext.Method.Object); //
            var filter = new MutationFilter(type.InList(), method.InList());
            var filter2 = new MutationFilter(type2.InList(), method2.InList());//
            */
            //_log.Debug("ExecuteMutation of: " + type+" - " +method );
            //_log.Debug("ExecuteMutation of: " + type + " - " + method + " + " + method2);
            IMutationOperator mutationOperator = mutant.MutationTarget.OperatorId == null ? new IdentityOperator() :
                _mutOperators.Single(m => mutant.MutationTarget.OperatorId == m.Info.Id);
            IMutationOperator mutationOperator2 = mutant._mutationTargets[0].OperatorId == null ? new IdentityOperator() :
                _mutOperators.Single(m => mutant._mutationTargets[0].OperatorId == m.Info.Id);
            var cci = moduleSource;
            try
            {
                //_log.Info("Execute mutation of " + mutant.MutationTarget + " contained in " + mutant.MutationTarget.MethodRaw + " modules. ");
                _log.Info("Execute mutation of " + mutant.MutationTarget + " contained in " + mutant.MutationTarget.MethodRaw + " modules and " + mutant._mutationTargets[0] + " contained in " + mutant._mutationTargets[0].MethodRaw + " modules.");
                var mutatedModules = new List<IModuleInfo>();
                var module = moduleSource.Modules.Single();

                List<MutationTarget> mutationTargets = new List<MutationTarget>();
                mutationTargets.Add(mutant.MutationTarget);
                mutationTargets.Add(mutant._mutationTargets[0]);
                List<MutationTarget> sharedtargets = new  List<MutationTarget>();
                foreach (var element in _sharedTargets.GetValues(mutationOperator, returnEmptySet: true))
                {
                     sharedtargets.Add(element);
                }
                foreach (var element in _sharedTargets.GetValues(mutationOperator2, returnEmptySet: true))
                {
                    sharedtargets.Add(element);
                }
                var visitorBack = new VisualCodeVisitorBack(mutationTargets,
                    sharedtargets,
                    module.Module, mutationOperator.Info.Id+mutationOperator2.Info.Id);


                var traverser2 = new VisualCodeTraverser(_filter, visitorBack, moduleSource);

                traverser2.Traverse(module.Module);

                visitorBack.PostProcess();

                var operatorCodeRewriter = mutationOperator.CreateRewriter();

                var rewriter = new VisualCodeRewriter(cci.Host, visitorBack.TargetAstObjects,
                    visitorBack.SharedAstObjects, _filter, operatorCodeRewriter, traverser2);

                operatorCodeRewriter.MutationTarget =
                    new UserMutationTarget(mutant.MutationTarget.Variant.Signature, mutant.MutationTarget.Variant.AstObjects);

                operatorCodeRewriter.NameTable = cci.Host.NameTable;
                operatorCodeRewriter.Host = cci.Host;
                operatorCodeRewriter.Module = module.Module;
                operatorCodeRewriter.OperatorUtils = _operatorUtils;
                operatorCodeRewriter.Initialize();

                /*var operatorCodeRewriter2 = mutationOperator2.CreateRewriter();//
                var rewriter2 = new VisualCodeRewriter(cci.Host, visitorBack.TargetAstObjects,
                    visitorBack.SharedAstObjects, _filter, operatorCodeRewriter2, traverser2);//

                operatorCodeRewriter2.MutationTarget =
                    new UserMutationTarget(mutant._mutationTarget2.Variant.Signature, mutant.MutationTarget2.Variant.AstObjects);//

                operatorCodeRewriter2.NameTable = cci.Host.NameTable;
                operatorCodeRewriter2.Host = cci.Host;
                operatorCodeRewriter2.Module = module.Module;
                operatorCodeRewriter2.OperatorUtils = _operatorUtils;
                operatorCodeRewriter2.Initialize();
                */
                var rewrittenModule = rewriter.Rewrite(module.Module);
                //var rewrittenModule2 = rewriter2.Rewrite(module.Module);//
                rewriter.CheckForUnfoundObjects();       
                //rewriter2.CheckForUnfoundObjects();//

                //2nd mutation
                
                /*IMutationOperator mutationOperator2 = mutant._mutationTarget2.OperatorId == null ? new IdentityOperator() :
                    _mutOperators.Single(m => mutant._mutationTarget2.OperatorId == m.Info.Id); //
                var cci2 = moduleSource2;
                var module2 = moduleSource2.Modules.Single();//
                var visitorBack2 = new VisualCodeVisitorBack(mutant.MutationTarget2.InList(),
                _sharedTargets.GetValues(mutationOperator2, returnEmptySet: true),
                    module2.Module, mutationOperator2.Info.Id); //

                var traverser22 = new VisualCodeTraverser(_filter, visitorBack2, moduleSource2);//
                traverser22.Traverse(module2.Module);//
                visitorBack2.PostProcess();//
                var operatorCodeRewriter2 = mutationOperator2.CreateRewriter();//
                var rewriter2 = new VisualCodeRewriter(cci2.Host, visitorBack2.TargetAstObjects,
                    visitorBack2.SharedAstObjects, _filter, operatorCodeRewriter2, traverser22);//

                operatorCodeRewriter2.MutationTarget =
                    new UserMutationTarget(mutant._mutationTarget2.Variant.Signature, mutant.MutationTarget2.Variant.AstObjects);//

                operatorCodeRewriter2.NameTable = cci2.Host.NameTable;
                operatorCodeRewriter2.Host = cci2.Host;
                operatorCodeRewriter2.Module = module2.Module;
                operatorCodeRewriter2.OperatorUtils = _operatorUtils;
                operatorCodeRewriter2.Initialize();

                var rewrittenModule2 = rewriter2.Rewrite(module2.Module);//
                rewriter2.CheckForUnfoundObjects();//
                */
                mutant.MutationTarget.Variant.AstObjects = null; //TODO: avoiding leaking memory. refactor
                mutant._mutationTargets[0].Variant.AstObjects = null; //TODO: avoiding leaking memory. refactor
                mutatedModules.Add(new ModuleInfo(rewrittenModule, ""));
                //mutatedModules.Add(new ModuleInfo(rewrittenModule2, ""));//

                //List<ICciModuleSource> cci = new List<ICciModuleSource>();
                //cci.Add(cci1);
                //cci.Add(cci2);
                List<IMethodDefinition> methodsMutated = new List<IMethodDefinition>();
                methodsMutated.Add(mutant._mutationTargets[0].MethodMutated);

                var result = new MutationResult(mutant, cci, null, mutant.MutationTarget.MethodMutated, methodsMutated);
                mutant.MutationTarget.MethodMutated = null; //TODO: avoiding leaking memory. refactor
                mutant._mutationTargets[0].MethodMutated = null; //TODO: avoiding leaking memory. refactor
                return result;
            }
            catch (Exception e)
            {
                throw new MutationException("CreateMutants failed on operator: {0}.".Formatted(mutationOperator.Info.Name), e);
            }
             

        }
        public void Test1()
        {
            var cci2 = new CciModuleSource(@"C:\PLIKI\VisualMutator\testprojects\MiscUtil\MiscUtil.UnitTests\bin\Debug\MiscUtil.dll");
            var copied21 = cci2.CreateCopier().Copy(cci2.Modules.Single().Module);
            var copied22 = cci2.CreateCopier().Copy(cci2.Modules.Single().Module);

            var debug1 = new DebugOperatorCodeVisitor();
            var debug2 = new DebugOperatorCodeVisitor();
            new DebugCodeTraverser(debug1).Traverse(copied21);
            new DebugCodeTraverser(debug2).Traverse(copied22);
           // File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\tree1" + ".txt", debug1.ToStringBasicVisit(), Encoding.ASCII);
           // File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\tree2" + ".txt", debug2.ToStringBasicVisit(), Encoding.ASCII);


//            var sb = new StringBuilder();
//            foreach (var diff1 in diff)
//            {
//                sb.AppendLine(diff1.ToString());
//            }
//            File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\treediff", sb.ToString());
            //

            //            foreach (var


            //   trace(@"C:\PLIKI\VisualMutator\testprojects\MiscUtil\MiscUtil.UnitTests\bin\Debug\MiscUtil.dll");
            //            trace(@"C:\PLIKI\VisualMutator\Projekty do testów\MiscUtil\MiscUtil.UnitTests\bin\Debug\MiscUtil.UnitTests.dll");
            //            trace(@"C:\Users\Arego\AppData\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache\xr5pbts3.ul3\itvv4cbi.0l3\VisualMutator.dll");
            //            trace(@"C:\PLIKI\Programowanie\C#\CREAM\Cream\bin\x86\Debug\TestRunnerNunit.dll");
            //        trace(@"C:\PLIKI\Programowanie\C#\CREAM\Cream\bin\x86\Debug\MutationTools.dll");
        }
Exemplo n.º 29
0
 private bool IsTestAssembly(CciModuleSource cci)
 {
     return _testAssemblies.Select(Path.GetFileNameWithoutExtension).Contains(cci.Module.Name);
 }
Exemplo n.º 30
0
        public void trace(string file)
        {
            var cci = new CciModuleSource(file);
            // ModuleInfo mod = (ModuleInfo) cci.Modules.Single();
            //            var copied = cci.CreateCopier().Copy(cci.Modules.Single().Module);
            //            var copied2 = cci.CreateCopier().Copy(cci.Modules.Single().Module);
            var copied3 = cci.CreateCopier().Copy(cci.Modules.Single().Module);
            var white   = cci.CloneWith(copied3);

            var type    = white.Modules.Single().Module.GetAllTypes().Single(t => t.Name.Value == "Deque") as NamedTypeDefinition;
            var method  = type.Methods.Single(m => m.Name.Value == "EnqueueFront");
            var choices = new MutationSessionChoices
            {
                Filter = new MutationFilter(
                    new List <TypeIdentifier>(),
                    new MethodIdentifier(method).InList()),
                SelectedOperators = new AOR_ArithmeticOperatorReplacement().InList <IMutationOperator>(),
            };

            var exec      = new MutationExecutor(null, choices, null);
            var container = new MutantsContainer(exec, new OriginalCodebase(cci.InList(), new List <string>()), new OptionsModel());
            IList <AssemblyNode> assemblies = container.InitMutantsForOperators(ProgressCounter.Inactive());

            var mutants = assemblies.Cast <CheckedNode>()
                          .SelectManyRecursive(n => n.Children ?? new NotifyingCollection <CheckedNode>())
                          .OfType <Mutant>().ToList();

            string name  = Path.GetFileNameWithoutExtension(file);
            var    debug = new DebugOperatorCodeVisitor();

            new DebugCodeTraverser(debug).Traverse(copied3);//.Modules.Single().Module);
            File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\" + name + "1.txt", debug.ToString(), Encoding.ASCII);

            var cci2 = new CciModuleSource(file);
            // ModuleInfo mod = (ModuleInfo) cci.Modules.Single();
            var copied21 = cci2.CreateCopier().Copy(cci2.Modules.Single().Module);
            var copied22 = cci2.CreateCopier().Copy(cci2.Modules.Single().Module);

            var debug1 = new DebugOperatorCodeVisitor();
            var debug2 = new DebugOperatorCodeVisitor();

            new DebugCodeTraverser(debug1).Traverse(copied21);
            new DebugCodeTraverser(debug2).Traverse(copied22);
            File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\tree1" + ".txt", debug1.ToString(), Encoding.ASCII);
            File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\tree2" + ".txt", debug2.ToString(), Encoding.ASCII);

            //
            //            foreach (var mutant in mutants)
            //            {
            //                var copied23 = cci2.CreateCopier().Copy(cci.Modules.Single().Module);
            //                var mutCci = cci2.CloneWith(copied23);
            //
            //              //  debug2.ToString().ShouldEqual(debug.ToString());
            //
            //
            //             //   MutationResult executeMutation = exec.ExecuteMutation(mutant, mutCci).Result;
            //
            //            }

            //            var copier2 = new CodeDeepCopier(new DefaultWindowsRuntimeHost());
            //            var copied2 = copier2.Copy(cci.Modules.Single().Module);
            //
            //            var a1 = new Assembly();
            //            var copier3 = new CodeDeepCopier(new PeReader.DefaultHost(), a1);
            //            var copied3 = copier3.Copy(cci.Modules.Single().Module);
            //
            //            var a2 = new Assembly();
            //            var copier4 = new CodeDeepCopier(new PeReader.DefaultHost(), a2);
            //            var copied4 = copier4.Copy(cci.Modules.Single().Module);

            //var copier5 = new CodeDeepCopier(cci.Host);
            //var copied5 = copier5.Copy(cci.Modules.Single().Module);

            //            var copied1 = cci.Copy();
            //            var copied2 = cci.Copy();
            //            var copied3 = cci.Copy();
            //            var copied4 = cci.Copy();
        }
Exemplo n.º 31
0
        public void IntegrationTestingMiscUtil()
        {
            var paths = new[] {
                 TestProjects.MiscUtil,
                 TestProjects.MiscUtilTests}.Select(_ => _.ToFilePathAbs()).ToList();

            var cci = new CciModuleSource(TestProjects.MiscUtil);
            var cciTests = new CciModuleSource(TestProjects.MiscUtilTests);

            var toMutate = TestProjects.MiscUtil.InList();
            var original = new OriginalCodebase(new List<CciModuleSource> {cci, cciTests});

            var type = (NamedTypeDefinition)cci.Module.Module.GetAllTypes().Single(t => t.Name.Value == "Range");
            var method = type.Methods.First(m => m.Name.Value == "Contains");

            var oper = new ROR_RelationalOperatorReplacement().InList<IMutationOperator>();

            var mutants = SetupMutations(original, paths, toMutate, oper, new MethodIdentifier(method));

            var vis = _kernel.Get<ICodeVisualizer>();


            var muma = _kernel.Get<MutantMaterializer>();


            IObserver<SessionEventArgs> sub = new ReplaySubject<SessionEventArgs>();
            foreach (var mutant in mutants)
            {
                //  var copy = new CciModuleSource(TestProjects.MiscUtil);
                //    MutationResult result = exec.ExecuteMutation(mutant, copy).Result;
                var muma2 = _kernel.Get<IFactory<TestingMutant>>().CreateWithParams(sub, mutant);


                var r = muma2.RunAsync().Result;
                var namespaces = _kernel.Get<TestsContainer>().CreateMutantTestTree(mutant);
                var meth = namespaces.Cast<CheckedNode>()
                    .SelectManyRecursive(n => n.Children, leafsOnly: true).OfType<TestNodeMethod>();

             //   vis.CreateDifferenceListing()
                meth.Count(m => m.State == TestNodeState.Failure).ShouldBeGreaterThan(0);
                //  var storedMutantInfo = muma.StoreMutant(mutant).Result;

                //  RunTestsForMutant(_choices.MutantsTestingOptions, _storedMutantInfo);

                //   CodeWithDifference differenceListing = vis.CreateDifferenceListing(CodeLanguage.CSharp, mutant, result).Result;
                //     differenceListing.LineChanges.Count.ShouldEqual(2);

            }

        }
Exemplo n.º 32
0
        public void IntegrationTestingAutoMapper()
        {
            var paths = new[] {
                 TestProjects.AutoMapper,
                 TestProjects.AutoMapperNet4,
                 TestProjects.AutoMapperTests
            }.Select(_ => _.ToFilePathAbs()).ToList();

            var cci = new CciModuleSource(TestProjects.AutoMapper);
            var cci1 = new CciModuleSource(TestProjects.AutoMapperNet4);
            var cciTests = new CciModuleSource(TestProjects.AutoMapperTests);

            var original = new OriginalCodebase(new List<CciModuleSource> {cci, cci1, cciTests});
            var toMutate = new List<string>{
                    TestProjects.AutoMapper,
                 TestProjects.AutoMapperNet4};

            var oper = new IdentityOperator2().InList<IMutationOperator>();

            var mutants = SetupMutations(original, paths, toMutate, oper);

            var vis = _kernel.Get<ICodeVisualizer>();


            var muma = _kernel.Get<MutantMaterializer>();


            IObserver<SessionEventArgs> sub = new ReplaySubject<SessionEventArgs>();
            foreach (var mutant in mutants)
            {
                //  var copy = new CciModuleSource(TestProjects.MiscUtil);
                //    MutationResult result = exec.ExecuteMutation(mutant, copy).Result;
                var muma2 = _kernel.Get<IFactory<TestingMutant>>().CreateWithParams(sub, mutant);


                var r = muma2.RunAsync().Result;
                var namespaces = _kernel.Get<TestsContainer>().CreateMutantTestTree(mutant);
                var meth = namespaces.Cast<CheckedNode>()
                    .SelectManyRecursive(n => n.Children, leafsOnly: true).OfType<TestNodeMethod>();

                meth.Count(m => m.State == TestNodeState.Failure).ShouldEqual(0);
                //  var storedMutantInfo = muma.StoreMutant(mutant).Result;

                //  RunTestsForMutant(_choices.MutantsTestingOptions, _storedMutantInfo);

                //   CodeWithDifference differenceListing = vis.CreateDifferenceListing(CodeLanguage.CSharp, mutant, result).Result;
                //     differenceListing.LineChanges.Count.ShouldEqual(2);

            }

        }
        public void Test0()
        {

            var cci = new CciModuleSource(TestProjects.DsaPath);
            var cci2 = new CciModuleSource(TestProjects.DsaPath);
            var type = cci.Modules.Single().Module.GetAllTypes().Single(t => t.Name.Value == "Deque") as NamedTypeDefinition;
            var method = type.Methods.Single(m => m.Name.Value == "EnqueueFront");
            var choices = new MutationSessionChoices
                          {
                              Filter = new MutationFilter(
                                  new List<TypeIdentifier>(), 
                                  new MethodIdentifier(method).InList()),
                              SelectedOperators = new AOR_ArithmeticOperatorReplacement().InList<IMutationOperator>(),
                          };

            var exec = new MutationExecutor(null, choices, null);
            var container = new MutantsContainer(exec, new OriginalCodebase(cci.InList(), new List<string>()));
            IList<AssemblyNode> assemblies = container.InitMutantsForOperators(ProgressCounter.Inactive());

            var mut = assemblies.Cast<CheckedNode>()
                .SelectManyRecursive(n => n.Children?? new NotifyingCollection<CheckedNode>())
                .OfType<Mutant>().First();

            var sourceMethod = type.Methods.Single(m => m.Name.Value == "EnqueueFront");


            MutationResult executeMutation = exec.ExecuteMutation(mut, cci2).Result;


     //       var viss = new Viss(cci2.Host, sourceMethod);
       //     IModule newMod = viss.Rewrite(executeMutation.MutatedModules.Modules.Single().Module);

            cci2.ReplaceWith(executeMutation.MutatedModules.Modules.Single().Module);

            MutationResult executeMutation2 = exec.ExecuteMutation(mut, cci2).Result;
        }
Exemplo n.º 34
0
 public void ReturnToCache(string name, CciModuleSource whiteModules)
 {
 }
Exemplo n.º 35
0
        public async Task Initialize()
        {
            _error = null;
            _paths = new BlockingCollection <ProjectFilesClone>();
            ProjectFilesClone[] projectFilesClones = await Task.WhenAll(
                Enumerable.Range(0, _threadsCount)
                .Select(i => _fileManager.CreateCloneAsync("WhiteCache-" + i)));

            _filesPool = projectFilesClones.ToList();
            foreach (var projectFilesClone in _filesPool)
            {
                _paths.Add(projectFilesClone);
            }

            ProjectFilesClone filesClone = _paths.Take();

            _mainModules = Task.Run(() =>
            {
                _referenceStrings = new List <string>();
                var task          = filesClone.Assemblies.Select(a =>
                {
                    var cci  = new CciModuleSource(a.Path);
                    cci.Guid = Guid.NewGuid();
                    _log.Debug("Whitecache#" + a.FileName + ": Created initial source: " + cci.Guid);
                    return(cci);
                }).ToList();

                _paths.Add(filesClone);
                return(task);
            });


            new Thread(() =>
            {
                try
                {
                    InitializeModuleNames();


                    foreach (ProjectFilesClone item in _paths.GetConsumingEnumerable())
                    {
                        lock (this)
                        {
                            while (_whiteCaches.All(_ => _.Value.Count >= _maxCount) && !_paths.IsAddingCompleted)
                            {
                                Monitor.Wait(this);
                            }
                        }

                        if (_paths.IsAddingCompleted)
                        {
                            return;
                        }
                        ProjectFilesClone item1 = item;
                        Task.Run(() => TryAdd(item1))
                        .ContinueWith(task =>
                        {
                            _paths.TryAdd(item1);
                            NotifyClients();
                        }).LogErrors();
                    }
                }
                catch (Exception e)
                {
                    _log.Error("Read assembly failed. ", e);
                    _error = e;
                    _paths.CompleteAdding();
                }
            }).Start();
        }
Exemplo n.º 36
0
 public void ReturnToCache(string moduleName, CciModuleSource source)
 {
     var whiteCach = _whiteCaches[_moduleNameToFileName[moduleName]];
     whiteCach.Add(source);
 }
Exemplo n.º 37
0
        public void Test00()
        {
            const string code =
                @"using System;
namespace Ns
{
    public class Test
    {
        public int Method1(int a, int b)
        {
            return a + b;
        }
    }
}";
            var cci    = new CciModuleSource(TestProjects.DsaPath);
            var cci2   = new CciModuleSource(TestProjects.DsaPath);
            var type   = cci.Modules.Single().Module.GetAllTypes().Single(t => t.Name.Value == "Deque") as NamedTypeDefinition;
            var method = type.Methods.Single(m => m.Name.Value == "EnqueueFront");

            var cci3    = MutationTestsHelper.CreateModuleFromCode(code);
            var choices = new MutationSessionChoices
            {
                Filter = new MutationFilter(
                    new List <TypeIdentifier>(),
                    new MethodIdentifier(method).InList()),
                //Filter = MutationFilter.AllowAll(),
                SelectedOperators = new AOR_ArithmeticOperatorReplacement().InList <IMutationOperator>(),
            };

            //   var type = cci.Modules.Single().Module.GetAllTypes().Single(t => t.Name.Value == "Test") as NamedTypeDefinition;
            //  var method = type.Methods.Single(m => m.Name.Value == "Method1");

            var exec      = new MutationExecutor(null, choices, null);
            var container = new MutantsContainer(exec, new OriginalCodebase(cci.InList()), new OptionsModel());
            IList <AssemblyNode> assemblies = container.InitMutantsForOperators(ProgressCounter.Inactive());

            var mut = assemblies.Cast <CheckedNode>()
                      .SelectManyRecursive(n => n.Children ?? new NotifyingCollection <CheckedNode>())
                      .OfType <Mutant>().ElementAt(4);

            MutationResult executeMutation = exec.ExecuteMutation(mut, cci2).Result;

            var c = new CodeDeepCopier(cci.Host);
            MethodDefinition methodDefinition = c.Copy(mut.MutationTarget.MethodRaw);

            var vis = new CodeVisualizer(null, null);
            var s   = vis.Visualize(CodeLanguage.CSharp, cci2);

            var v        = new MutantsCache.Viss(cci2.Host, methodDefinition);
            var modClean = v.Rewrite(cci2.Modules.Single().Module);

            cci2.ReplaceWith(modClean);

            var debug  = new DebugOperatorCodeVisitor();
            var debug2 = new DebugOperatorCodeVisitor();

            new DebugCodeTraverser(debug).Traverse(cci.Modules.Single().Module);
            new DebugCodeTraverser(debug2).Traverse(cci2.Modules.Single().Module);
            File.WriteAllText(@"C:\PLIKI\tree1.txt", debug.ToString());
            File.WriteAllText(@"C:\PLIKI\tree2.txt", debug2.ToString());
            //   Console.WriteLine(debug);
            //  Console.WriteLine(debug2);
            //  cci.ReplaceWith(executeMutation.MutatedModules.Modules.Single().Module);

            //    var s2 = vis.Visualize(CodeLanguage.CSharp, cci2);
            //  Console.WriteLine(s);
            // Console.WriteLine(s2);
            //       var viss = new Viss(cci2.Host, sourceMethod);
            //     IModule newMod = viss.Rewrite(executeMutation.MutatedModules.Modules.Single().Module);

            // cci2.ReplaceWith(executeMutation.MutatedModules.Modules.Single().Module);

            //  MutationResult executeMutation2 = exec.ExecuteMutation(mut, cci2).Result;
        }
Exemplo n.º 38
0
        public async Task Initialize()
        {
            _error = null;
            _paths = new BlockingCollection<ProjectFilesClone>();
            ProjectFilesClone[] projectFilesClones = await Task.WhenAll(
                Enumerable.Range(0, _threadsCount)
                .Select(i => _fileManager.CreateCloneAsync("WhiteCache-"+i)));
            
            _filesPool = projectFilesClones.ToList();
            foreach (var projectFilesClone in _filesPool)
            {
                _paths.Add(projectFilesClone);
            }

            ProjectFilesClone filesClone = _paths.Take();

                _mainModules = Task.Run(() =>
                {
                    _referenceStrings = new List<string>();
                    var task = filesClone.Assemblies.Select(a =>
                    {
                        var cci = new CciModuleSource(a.Path);
                        cci.Guid = Guid.NewGuid();
                        _log.Debug("Whitecache#" + a.FileName + ": Created initial source: "+cci.Guid);
                        return cci;
                    }).ToList();

                    _paths.Add(filesClone);
                    return task;
                });
            

            new Thread(() =>
            {
                try
                {
                    InitializeModuleNames();


                    foreach (ProjectFilesClone item in _paths.GetConsumingEnumerable())
                    {
                        lock(this)
                        {
                            while (_whiteCaches.All(_ => _.Value.Count >= _maxCount) && !_paths.IsAddingCompleted)
                            {
                                Monitor.Wait(this);
                            }
                        }
                       
                        if(_paths.IsAddingCompleted)
                        {
                            return;
                        }
                        ProjectFilesClone item1 = item;
                        Task.Run(() => TryAdd(item1))
                            .ContinueWith(task =>
                            {
                                _paths.TryAdd(item1);
                                NotifyClients();
                            }).LogErrors();
                    }
                }
                catch (Exception e)
                {
                    _log.Error("Read assembly failed. ", e);
                    _error = e;
                    _paths.CompleteAdding();
                }

            }).Start();
        }
        public void Test00()
        {
            const string code =
    @"using System;
namespace Ns
{
    public class Test
    {
        public int Method1(int a, int b)
        {
            return a + b;
        }
    }
}";
            var cci = new CciModuleSource(TestProjects.DsaPath);
            var cci2 = new CciModuleSource(TestProjects.DsaPath);
            var type = cci.Modules.Single().Module.GetAllTypes().Single(t => t.Name.Value == "Deque") as NamedTypeDefinition;
            var method = type.Methods.Single(m => m.Name.Value == "EnqueueFront");

               var cci3 = MutationTestsHelper.CreateModuleFromCode(code);
            var choices = new MutationSessionChoices
            {
                Filter = new MutationFilter(
                                  new List<TypeIdentifier>(),
                                  new MethodIdentifier(method).InList()),
                //Filter = MutationFilter.AllowAll(),
                SelectedOperators = new AOR_ArithmeticOperatorReplacement().InList<IMutationOperator>(),
            };

            //   var type = cci.Modules.Single().Module.GetAllTypes().Single(t => t.Name.Value == "Test") as NamedTypeDefinition;
            //  var method = type.Methods.Single(m => m.Name.Value == "Method1");

           
            var exec = new MutationExecutor(null, choices, null);
            var container = new MutantsContainer(exec, new OriginalCodebase(cci.InList(), new List<string>()));
            IList<AssemblyNode> assemblies = container.InitMutantsForOperators(ProgressCounter.Inactive());

            var mut = assemblies.Cast<CheckedNode>()
                .SelectManyRecursive(n => n.Children ?? new NotifyingCollection<CheckedNode>())
                .OfType<Mutant>().ElementAt(4);

            


            MutationResult executeMutation = exec.ExecuteMutation(mut, cci2).Result;

            var c = new CodeDeepCopier(cci.Host);
            MethodDefinition methodDefinition = c.Copy(mut.MutationTarget.MethodRaw);

            var vis = new CodeVisualizer(null, null);
            var s = vis.Visualize(CodeLanguage.CSharp, cci2);



            var v = new MutantsCache.Viss(cci2.Host, methodDefinition);
            var modClean = v.Rewrite(cci2.Modules.Single().Module);
            cci2.ReplaceWith(modClean);

            var debug = new DebugOperatorCodeVisitor();
            var debug2 = new DebugOperatorCodeVisitor();
            new DebugCodeTraverser(debug).Traverse(cci.Modules.Single().Module);
            new DebugCodeTraverser(debug2).Traverse(cci2.Modules.Single().Module);
            File.WriteAllText(@"C:\PLIKI\tree1.txt", debug.ToString());
            File.WriteAllText(@"C:\PLIKI\tree2.txt", debug2.ToString());
           //   Console.WriteLine(debug);
           //  Console.WriteLine(debug2);
            //  cci.ReplaceWith(executeMutation.MutatedModules.Modules.Single().Module);

        //    var s2 = vis.Visualize(CodeLanguage.CSharp, cci2);
          //  Console.WriteLine(s);
           // Console.WriteLine(s2);
            //       var viss = new Viss(cci2.Host, sourceMethod);
            //     IModule newMod = viss.Rewrite(executeMutation.MutatedModules.Modules.Single().Module);

            // cci2.ReplaceWith(executeMutation.MutatedModules.Modules.Single().Module);

          //  MutationResult executeMutation2 = exec.ExecuteMutation(mut, cci2).Result;
        }
Exemplo n.º 40
0
 public void ReturnToCache(string name, CciModuleSource whiteModules)
 {
 }
Exemplo n.º 41
0
        public async Task <MutationResult> ExecuteMutation(Mutant mutant, CciModuleSource moduleSource, CciModuleSource moduleSource2)
        {
            /*var type = new TypeIdentifier((INamedTypeDefinition) mutant.MutationTarget.ProcessingContext.Type.Object);
             * var type2 = new TypeIdentifier((INamedTypeDefinition)mutant.MutationTarget2.ProcessingContext.Type.Object);//
             * var method = new MethodIdentifier((IMethodDefinition) mutant.MutationTarget.ProcessingContext.Method.Object);
             * var method2 = new MethodIdentifier((IMethodDefinition)mutant._mutationTarget2.ProcessingContext.Method.Object); //
             * var filter = new MutationFilter(type.InList(), method.InList());
             * var filter2 = new MutationFilter(type2.InList(), method2.InList());//
             */
            //_log.Debug("ExecuteMutation of: " + type+" - " +method );
            //_log.Debug("ExecuteMutation of: " + type + " - " + method + " + " + method2);
            IMutationOperator mutationOperator = mutant.MutationTarget.OperatorId == null ? new IdentityOperator() :
                                                 _mutOperators.Single(m => mutant.MutationTarget.OperatorId == m.Info.Id);
            IMutationOperator mutationOperator2 = mutant._mutationTargets[0].OperatorId == null ? new IdentityOperator() :
                                                  _mutOperators.Single(m => mutant._mutationTargets[0].OperatorId == m.Info.Id);
            var cci = moduleSource;

            try
            {
                //_log.Info("Execute mutation of " + mutant.MutationTarget + " contained in " + mutant.MutationTarget.MethodRaw + " modules. ");
                _log.Info("Execute mutation of " + mutant.MutationTarget + " contained in " + mutant.MutationTarget.MethodRaw + " modules and " + mutant._mutationTargets[0] + " contained in " + mutant._mutationTargets[0].MethodRaw + " modules.");
                var mutatedModules = new List <IModuleInfo>();
                var module         = moduleSource.Modules.Single();

                List <MutationTarget> mutationTargets = new List <MutationTarget>();
                mutationTargets.Add(mutant.MutationTarget);
                mutationTargets.Add(mutant._mutationTargets[0]);
                List <MutationTarget> sharedtargets = new  List <MutationTarget>();
                foreach (var element in _sharedTargets.GetValues(mutationOperator, returnEmptySet: true))
                {
                    sharedtargets.Add(element);
                }
                foreach (var element in _sharedTargets.GetValues(mutationOperator2, returnEmptySet: true))
                {
                    sharedtargets.Add(element);
                }
                var visitorBack = new VisualCodeVisitorBack(mutationTargets,
                                                            sharedtargets,
                                                            module.Module, mutationOperator.Info.Id + mutationOperator2.Info.Id);


                var traverser2 = new VisualCodeTraverser(_filter, visitorBack, moduleSource);

                traverser2.Traverse(module.Module);

                visitorBack.PostProcess();

                var operatorCodeRewriter = mutationOperator.CreateRewriter();

                var rewriter = new VisualCodeRewriter(cci.Host, visitorBack.TargetAstObjects,
                                                      visitorBack.SharedAstObjects, _filter, operatorCodeRewriter, traverser2);

                operatorCodeRewriter.MutationTarget =
                    new UserMutationTarget(mutant.MutationTarget.Variant.Signature, mutant.MutationTarget.Variant.AstObjects);

                operatorCodeRewriter.NameTable     = cci.Host.NameTable;
                operatorCodeRewriter.Host          = cci.Host;
                operatorCodeRewriter.Module        = module.Module;
                operatorCodeRewriter.OperatorUtils = _operatorUtils;
                operatorCodeRewriter.Initialize();

                /*var operatorCodeRewriter2 = mutationOperator2.CreateRewriter();//
                 * var rewriter2 = new VisualCodeRewriter(cci.Host, visitorBack.TargetAstObjects,
                 *  visitorBack.SharedAstObjects, _filter, operatorCodeRewriter2, traverser2);//
                 *
                 * operatorCodeRewriter2.MutationTarget =
                 *  new UserMutationTarget(mutant._mutationTarget2.Variant.Signature, mutant.MutationTarget2.Variant.AstObjects);//
                 *
                 * operatorCodeRewriter2.NameTable = cci.Host.NameTable;
                 * operatorCodeRewriter2.Host = cci.Host;
                 * operatorCodeRewriter2.Module = module.Module;
                 * operatorCodeRewriter2.OperatorUtils = _operatorUtils;
                 * operatorCodeRewriter2.Initialize();
                 */
                var rewrittenModule = rewriter.Rewrite(module.Module);
                //var rewrittenModule2 = rewriter2.Rewrite(module.Module);//
                rewriter.CheckForUnfoundObjects();
                //rewriter2.CheckForUnfoundObjects();//

                //2nd mutation

                /*IMutationOperator mutationOperator2 = mutant._mutationTarget2.OperatorId == null ? new IdentityOperator() :
                 *  _mutOperators.Single(m => mutant._mutationTarget2.OperatorId == m.Info.Id); //
                 * var cci2 = moduleSource2;
                 * var module2 = moduleSource2.Modules.Single();//
                 * var visitorBack2 = new VisualCodeVisitorBack(mutant.MutationTarget2.InList(),
                 * _sharedTargets.GetValues(mutationOperator2, returnEmptySet: true),
                 *  module2.Module, mutationOperator2.Info.Id); //
                 *
                 * var traverser22 = new VisualCodeTraverser(_filter, visitorBack2, moduleSource2);//
                 * traverser22.Traverse(module2.Module);//
                 * visitorBack2.PostProcess();//
                 * var operatorCodeRewriter2 = mutationOperator2.CreateRewriter();//
                 * var rewriter2 = new VisualCodeRewriter(cci2.Host, visitorBack2.TargetAstObjects,
                 *  visitorBack2.SharedAstObjects, _filter, operatorCodeRewriter2, traverser22);//
                 *
                 * operatorCodeRewriter2.MutationTarget =
                 *  new UserMutationTarget(mutant._mutationTarget2.Variant.Signature, mutant.MutationTarget2.Variant.AstObjects);//
                 *
                 * operatorCodeRewriter2.NameTable = cci2.Host.NameTable;
                 * operatorCodeRewriter2.Host = cci2.Host;
                 * operatorCodeRewriter2.Module = module2.Module;
                 * operatorCodeRewriter2.OperatorUtils = _operatorUtils;
                 * operatorCodeRewriter2.Initialize();
                 *
                 * var rewrittenModule2 = rewriter2.Rewrite(module2.Module);//
                 * rewriter2.CheckForUnfoundObjects();//
                 */
                mutant.MutationTarget.Variant.AstObjects      = null; //TODO: avoiding leaking memory. refactor
                mutant._mutationTargets[0].Variant.AstObjects = null; //TODO: avoiding leaking memory. refactor
                mutatedModules.Add(new ModuleInfo(rewrittenModule, ""));
                //mutatedModules.Add(new ModuleInfo(rewrittenModule2, ""));//

                //List<ICciModuleSource> cci = new List<ICciModuleSource>();
                //cci.Add(cci1);
                //cci.Add(cci2);
                List <IMethodDefinition> methodsMutated = new List <IMethodDefinition>();
                methodsMutated.Add(mutant._mutationTargets[0].MethodMutated);

                var result = new MutationResult(mutant, cci, null, mutant.MutationTarget.MethodMutated, methodsMutated);
                mutant.MutationTarget.MethodMutated      = null; //TODO: avoiding leaking memory. refactor
                mutant._mutationTargets[0].MethodMutated = null; //TODO: avoiding leaking memory. refactor
                return(result);
            }
            catch (Exception e)
            {
                throw new MutationException("CreateMutants failed on operator: {0}.".Formatted(mutationOperator.Info.Name), e);
            }
        }
Exemplo n.º 42
0
 private bool IsTestAssembly(CciModuleSource cci)
 {
     return(_testAssemblies.Select(Path.GetFileNameWithoutExtension).Contains(cci.Module.Name));
 }
        public void trace(string file)
        {
           
            var cci = new CciModuleSource(file);
           // ModuleInfo mod = (ModuleInfo) cci.Modules.Single();
//            var copied = cci.CreateCopier().Copy(cci.Modules.Single().Module);
//            var copied2 = cci.CreateCopier().Copy(cci.Modules.Single().Module);
            var copied3 = cci.CreateCopier().Copy(cci.Modules.Single().Module);
            var white = cci.CloneWith(copied3);

    
            var type = white.Modules.Single().Module.GetAllTypes().Single(t => t.Name.Value == "Deque") as NamedTypeDefinition;
            var method = type.Methods.Single(m => m.Name.Value == "EnqueueFront");
            var choices = new MutationSessionChoices
            {
                Filter = new MutationFilter(
                                  new List<TypeIdentifier>(),
                                  new MethodIdentifier(method).InList()),
                SelectedOperators = new AOR_ArithmeticOperatorReplacement().InList<IMutationOperator>(),
            };

            var exec = new MutationExecutor(null, choices, null);
            var container = new MutantsContainer(exec, new OriginalCodebase(cci.InList(), new List<string>()));
            IList<AssemblyNode> assemblies = container.InitMutantsForOperators(ProgressCounter.Inactive());

            var mutants = assemblies.Cast<CheckedNode>()
                .SelectManyRecursive(n => n.Children ?? new NotifyingCollection<CheckedNode>())
                .OfType<Mutant>().ToList();

            string name = Path.GetFileNameWithoutExtension(file);
            var debug = new DebugOperatorCodeVisitor();
            new DebugCodeTraverser(debug).Traverse(copied3);//.Modules.Single().Module);
            File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\" + name + "1.txt", debug.ToString(), Encoding.ASCII);

            var cci2 = new CciModuleSource(file);
            // ModuleInfo mod = (ModuleInfo) cci.Modules.Single();
            var copied21 = cci2.CreateCopier().Copy(cci2.Modules.Single().Module);
            var copied22 = cci2.CreateCopier().Copy(cci2.Modules.Single().Module);

            var debug1 = new DebugOperatorCodeVisitor();
            var debug2 = new DebugOperatorCodeVisitor();
            new DebugCodeTraverser(debug1).Traverse(copied21);
            new DebugCodeTraverser(debug2).Traverse(copied22);
            File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\tree1" + ".txt", debug1.ToString(), Encoding.ASCII);
            File.WriteAllText(@"C:\PLIKI\VisualMutator\trace\tree2" + ".txt", debug2.ToString(), Encoding.ASCII);

//
//            foreach (var mutant in mutants)
//            {
//                var copied23 = cci2.CreateCopier().Copy(cci.Modules.Single().Module);
//                var mutCci = cci2.CloneWith(copied23);
//                
//              //  debug2.ToString().ShouldEqual(debug.ToString());
//
//
//             //   MutationResult executeMutation = exec.ExecuteMutation(mutant, mutCci).Result;
//
//            }




            //            var copier2 = new CodeDeepCopier(new DefaultWindowsRuntimeHost());
            //            var copied2 = copier2.Copy(cci.Modules.Single().Module);
            //
            //            var a1 = new Assembly();
            //            var copier3 = new CodeDeepCopier(new PeReader.DefaultHost(), a1);
            //            var copied3 = copier3.Copy(cci.Modules.Single().Module);
            //
            //            var a2 = new Assembly();
            //            var copier4 = new CodeDeepCopier(new PeReader.DefaultHost(), a2);
            //            var copied4 = copier4.Copy(cci.Modules.Single().Module);


            //var copier5 = new CodeDeepCopier(cci.Host);
            //var copied5 = copier5.Copy(cci.Modules.Single().Module);

            //            var copied1 = cci.Copy();
            //            var copied2 = cci.Copy();
            //            var copied3 = cci.Copy();
            //            var copied4 = cci.Copy();

       
      
        }
Exemplo n.º 44
0
        public void ReturnToCache(string moduleName, CciModuleSource source)
        {
            var whiteCach = _whiteCaches[_moduleNameToFileName[moduleName]];

            whiteCach.Add(source);
        }
Exemplo n.º 45
0
        public void IntegrationTestMutation()
        {

            var cci = new CciModuleSource(TestProjects.MiscUtil);

            var original = new OriginalCodebase(cci.InList());
            var type =
                cci.Modules.Single().Module.GetAllTypes().Single(t => t.Name.Value == "Adler32") as NamedTypeDefinition;
            var method = type.Methods.First(m => m.Name.Value == "ComputeChecksum");
            var choices = new MutationSessionChoices
                          {
                              Filter = new MutationFilter(
                                  new List<TypeIdentifier>(),
                                  new MethodIdentifier(method).InList()),
                              SelectedOperators = new LOR_LogicalOperatorReplacement().InList<IMutationOperator>(),
                          };

            var exec = new MutationExecutor(new OptionsModel(), choices, null);
            var container = new MutantsContainer(exec, original);
            IList<AssemblyNode> assemblies = container.InitMutantsForOperators(ProgressCounter.Inactive());

            var mutants = assemblies.Cast<CheckedNode>()
                .SelectManyRecursive(n => n.Children ?? new NotifyingCollection<CheckedNode>())
                .OfType<Mutant>();

            var diff = new CodeDifferenceCreator();
            var vis = new CodeVisualizer(original, diff);

            foreach (var mutant in mutants)
            {
                var copy = new CciModuleSource(TestProjects.MiscUtil);
                MutationResult result = exec.ExecuteMutation(mutant, copy).Result;
                CodeWithDifference differenceListing =
                    vis.CreateDifferenceListing(CodeLanguage.CSharp, mutant, result).Result;
                differenceListing.LineChanges.Count.ShouldEqual(2);

            }


        }