private void GenerateSnapshot(string snapshotName, params string[] files)
        {
            var sc = new ServiceCollection();

            sc.AddTestLogging(this.testOutputHelper);
            sc.AddCSharpToolsGenerator();

            using (var sp = sc.BuildServiceProvider())
            {
                var workspace = sp.GetService <ICSharpWorkspace>();

                foreach (var file in files)
                {
                    workspace.RegisterFile(file);
                }

                var generator = new ToolsGenerator(
                    sp.GetService <ILogger <ToolsGenerator> >(),
                    workspace);

                var inputs  = new HashSet <string>();
                var locator = new RelativeLocator(string.Empty, "target.name.space");

                var snapshotGenerator = new SnapshotGenerator();

                generator.Generate(locator, snapshotGenerator, workspace.Files);

                var location = SnapshotHelper.GetLocationFromCallingProjectRoot(null);
                SnapshotHelper.AssertSnapshot(snapshotGenerator.GetAllGenerated(), snapshotName, location);
            }
        }
        private void GenerateAndAssertSnapshot(
            Type patternType,
            string patternInterfaceFile,
            string patternImplementationFile,
            string declarationInterfaceFile,
            string targetNameSpace,
            string snapshotName)
        {
            var resolver = this.LoadWorkSpace(
                patternInterfaceFile,
                patternImplementationFile,
                declarationInterfaceFile,
                out var itfDeclaration,
                out var itfPatternDeclaration,
                out var implPatternDeclaration,
                out var files);

            var locator = new RelativeLocator(string.Empty, targetNameSpace);

            var snapshotGenerator = new SnapshotGenerator();

            var implGenerator = new AutomatedGenerator(
                snapshotGenerator, locator, resolver, patternType);

            implGenerator.Generate(files);

            string location = SnapshotHelper.GetLocationFromCallingProjectRoot("Generator");

            SnapshotHelper.AssertSnapshot(snapshotGenerator.GetAllGenerated(), snapshotName, location);
        }
Beispiel #3
0
        private static void generateSnapshotAndCompare(StructureDefinition original, ArtifactResolver source)
        {
            var generator = new SnapshotGenerator(source, markChanges: false);

            var expanded = (StructureDefinition)original.DeepCopy();

            Assert.IsTrue(original.IsExactly(expanded));

            generator.Generate(expanded);

            // Simulate bug in Grahame's expander
            if (original.Snapshot.Element.Count == expanded.Snapshot.Element.Count)
            {
                for (var ix = 0; ix < expanded.Snapshot.Element.Count; ix++)
                {
                    if (original.Snapshot.Element[ix].Path == expanded.Snapshot.Element[ix].Path)
                    {
                        expanded.Snapshot.Element[ix].Min         = original.Snapshot.Element[ix].Min;
                        expanded.Snapshot.Element[ix].MustSupport = original.Snapshot.Element[ix].MustSupport;
                    }
                }
            }

            var areEqual = original.IsExactly(expanded);

            if (!areEqual)
            {
                File.WriteAllText("c:\\temp\\snapshotgen-source.xml", FhirSerializer.SerializeResourceToXml(original));
                File.WriteAllText("c:\\temp\\snapshotgen-dest.xml", FhirSerializer.SerializeResourceToXml(expanded));
            }

            Assert.IsTrue(areEqual);
        }
        private void GenerateAndAssertSnapshot(
            string patternInterfaceFile,
            string patternImplementationFile,
            string declarationInterfaceFile,
            string targetNameSpace,
            string implName,
            string snapshotName)
        {
            this.LoadWorkSpace(
                patternInterfaceFile,
                patternImplementationFile,
                declarationInterfaceFile,
                out var itfDeclaration,
                out var itfPatternDeclaration,
                out var implPatternDeclaration);

            var locator = new RelativeLocator(string.Empty, targetNameSpace);

            var snapshotGenerator = new SnapshotGenerator();

            var implGenerator = new ImplementationGenerator(
                snapshotGenerator, locator, itfPatternDeclaration, implPatternDeclaration);

            var writerSelector = SetupWriterSelector(itfPatternDeclaration, implPatternDeclaration, itfDeclaration, implName);

            implGenerator.Generate(writerSelector, itfDeclaration, implName);

            string location = SnapshotHelper.GetLocationFromCallingProjectRoot("Generator");

            SnapshotHelper.AssertSnapshot(snapshotGenerator.GetAllGenerated(), snapshotName, location);
        }
        public ActionResult GetMjpeg()
        {
            SnapshotGenerator.StartImageStream();
            Response.Clear();
            Response.ContentType = $"{_contentTypeForMJpeg}{_boundary}";
            var encoding     = new ASCIIEncoding();
            var outputStream = new MemoryStream();

            while (!Response.HttpContext.RequestAborted.IsCancellationRequested)
            {
                try
                {
                    var buf = SnapshotGenerator.CPUSnapShot;
                    if (buf != null)
                    {
                        var boundaryString = new StringBuilder($"\r\n{_boundary}\r\nContent-Type: image/jpeg\r\nContent-Length:{buf.Length}\r\n\r\n");
                        var boundary       = encoding.GetBytes(boundaryString.ToString());
                        outputStream.Write(boundary, 0, boundary.Length);
                        outputStream.Write(buf, 0, buf.Length);
                        outputStream.Position = 0;
                        outputStream.CopyTo(Response.Body);
                    }
                    Thread.Sleep(1000);
                }
                catch (Exception ex)
                {
                    Serilog.Log.Error(ex, "GetMjpeg");
                }
            }

            SnapshotGenerator.StopImageStream();
            return(Ok());
        }
 static SnapshotGenerator GetSnapshotGenerator()
 {
     if (_snapshotGenerator == null)
     {
         var src = new MultiResolver(_cachedCoreSource, _cachedDirSource);
         _snapshotGenerator = new SnapshotGenerator(src);
     }
     return(_snapshotGenerator);
 }
Beispiel #7
0
 void Awake()
 {
     RESULT_DIRECTORY             = SnapshotGenerator.GetProjectPath() + RESULT_DIRECTORY;
     SUMMARY_STATISTICS_DIRECTORY = RESULT_DIRECTORY + SUMMARY_STATISTICS_DIRECTORY;
     SAMPLED_METRICS_DIRECTORY    = RESULT_DIRECTORY + SAMPLED_METRICS_DIRECTORY;
     SnapshotGenerator.DEFAULT_SNAPSHOT_DIRECTORY = RESULT_DIRECTORY + SnapshotGenerator.DEFAULT_SNAPSHOT_DIRECTORY;
     SnapshotGenerator.CreateDirectoryIfNeeded(RESULT_DIRECTORY);
     SnapshotGenerator.CreateDirectoryIfNeeded(SUMMARY_STATISTICS_DIRECTORY);
     SnapshotGenerator.CreateDirectoryIfNeeded(SAMPLED_METRICS_DIRECTORY);
     SnapshotGenerator.CreateDirectoryIfNeeded(SnapshotGenerator.DEFAULT_SNAPSHOT_DIRECTORY);
 }
        public async void RunSnapshotMultiThreaded()
        {
            // Arrange
            var source    = new CachedResolver(new ZipSource("specification.zip"));
            var generator = new SnapshotGenerator(source);

            OperationOutcome GenerateSnapshot(StructureDefinition sd)
            {
                generator.Update(sd);
                System.Diagnostics.Debug.WriteLine(sd.HasSnapshot);
                return(generator.Outcome ?? new OperationOutcome());
            }

            var nrOfParrallelTasks = 100;
            var results            = new ConcurrentBag <OperationOutcome>();
            var buffer             = new BufferBlock <StructureDefinition>();
            var processor          = new ActionBlock <StructureDefinition>(sd =>
            {
                // Act
                var outcome = ProfilePreprocessor.GenerateSnapshots(new[] { sd }, GenerateSnapshot, "unittest");
                results.Add(outcome);
            }
                                                                           ,
                                                                           new ExecutionDataflowBlockOptions
            {
                MaxDegreeOfParallelism = 100
            });

            buffer.LinkTo(processor, new DataflowLinkOptions {
                PropagateCompletion = true
            });

            var patientSD = source.ResolveByCanonicalUri("http://hl7.org/fhir/StructureDefinition/Patient") as StructureDefinition;

            // Clear snapshots after initial load
            // This will force the validator to regenerate all snapshots
            if (patientSD.HasSnapshot)
            {
                patientSD.Snapshot = null;
            }

            for (int i = 0; i < nrOfParrallelTasks; i++)
            {
                buffer.Post(patientSD);
            }
            buffer.Complete();
            await processor.Completion;

            // Assert
            var nrOfSuccess = results.Count(r => r.Success);

            Assert.Equal(nrOfParrallelTasks, nrOfSuccess);
        }
Beispiel #9
0
        public static void ExpandProfileFile(string inputfile, string outputfile)
        {
            var source = ArtifactResolver.CreateOffline();
            //var source = new CachedArtifactSource(ArtifactResolver.CreateOffline());
            var expander = new SnapshotGenerator(source);

            string xml  = File.ReadAllText(inputfile);
            var    diff = (new FhirXmlParser()).Parse <StructureDefinition>(xml);

            expander.Generate(diff);
            xml = FhirSerializer.SerializeResourceToXml(diff);
            File.WriteAllText(outputfile, xml);
        }
Beispiel #10
0
    public void LogTwoDimensionalExperimentSamples(string experimentDecriptorString, string measuredMetric, List <Vector2> values)
    {
        //csvWriter = new StreamWriter(measuredMetric + "_" + experimentDecriptorString + ".csv");
        string experimentSamplesDirectory = SAMPLED_METRICS_DIRECTORY + experimentDecriptorString + "/";

        SnapshotGenerator.CreateDirectoryIfNeeded(experimentSamplesDirectory);
        csvWriter = new StreamWriter(experimentSamplesDirectory + measuredMetric + ".csv");
        foreach (Vector2 value in values)
        {
            csvWriter.WriteLine(value.x + ", " + value.y);
        }
        csvWriter.Flush();
        csvWriter.Close();
    }
Beispiel #11
0
        public static void Create(StructureDefinition structDef)
        {
            if (structDef is null)
            {
                throw new ArgumentNullException(nameof(structDef));
            }

            structDef.Snapshot = new StructureDefinition.SnapshotComponent();

            // Generate StructureDefinition.Snapshot using c# API.
            SnapshotGeneratorSettings settings  = SnapshotGeneratorSettings.CreateDefault();
            SnapshotGenerator         generator = new SnapshotGenerator(ZipFhirSource.Source, settings);

            generator.Update(structDef);
        }
Beispiel #12
0
        public void Setup()
        {
            var config = new RepositoryConfig
            {
                Collection = "Movie",
                Database   = "MovieSystem",
                Key        = "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
                Uri        = "https://localhost:8081/"
            };
            var repository = new EventStoreRepository(config);

            repository.Initialise();

            _movieHandler      = new MovieHandler(repository);
            _views             = new Views(repository);
            _snapshotGenerator = new SnapshotGenerator(repository);
        }
        public void TestExpandChild()
        {
            var qStructDef = _testSource.GetStructureDefinition("http://hl7.org/fhir/StructureDefinition/Questionnaire");

            Assert.IsNotNull(qStructDef);
            Assert.IsNotNull(qStructDef.Snapshot);

            var nav = new ElementNavigator(qStructDef.Snapshot.Element);

            nav.JumpToFirst("Questionnaire.telecom");
            Assert.IsTrue(SnapshotGenerator.expandElement(nav, _testSource, SnapshotGeneratorSettings.Default));
            Assert.IsTrue(nav.MoveToChild("period"), "Did not move into complex datatype ContactPoint");

            nav.JumpToFirst("Questionnaire.group");
            Assert.IsTrue(SnapshotGenerator.expandElement(nav, _testSource, SnapshotGeneratorSettings.Default));
            Assert.IsTrue(nav.MoveToChild("title"), "Did not move into internally defined backbone element Group");
        }
Beispiel #14
0
            /// <summary>
            /// customSds is a dictionary of {canonical url, StructureDefinition}
            /// </summary>
            /// <param name="customSds"></param>
            public CustomResolver(Dictionary <string, StructureDefinition> customSds)
            {
                var hostingEnv = new Mock <IHostingEnvironment>();

                hostingEnv.Setup(he => he.ContentRootPath).Returns(Directory.GetCurrentDirectory());
                var zipLocator = new SpecificationZipLocator(hostingEnv.Object.ContentRootPath, Logger <SpecificationZipLocator>());

                _coreResolver = new SpecificationZipResolverR4(zipLocator, Logger <SpecificationZipResolverR4>());

                _customSds = customSds;
                foreach (var item in _customSds)
                {
                    if (!item.Value.HasSnapshot)
                    {
                        var snapShotGenerator = new SnapshotGenerator(_coreResolver);
                        snapShotGenerator.Update(item.Value);
                    }
                }
            }
Beispiel #15
0
        public void GenerateNorwegianSnapshots()
        {
            var mySource  = new FileDirectoryArtifactSource(@"C:\Git\helsenord.ig\Source\Chapter.3.Package", includeSubdirectories: false);
            var stdSource = ZipArtifactSource.CreateValidationSource();
            var resolver  = new ArtifactResolver(new MultiArtifactSource(mySource, stdSource));

            var sources = new[] { "noHealthcareService", "noHealthcareServiceLocation", "noOrganization", "noPractitioner", "acronym" };

            var generator = new SnapshotGenerator(resolver, markChanges: false);

            foreach (var source in sources)
            {
                var sd = resolver.GetStructureDefinition("http://hl7.no/fhir/StructureDefinition/" + source);
                Assert.IsNotNull(sd, "Cannot find SD " + sd.Url);

                generator.Generate(sd);
                File.WriteAllText(@"C:\Git\helsenord.ig\Source\Chapter.3.Package\structure." + source + ".xml", FhirSerializer.SerializeResourceToXml(sd));
            }
        }
        private static void generateSnapshotAndCompare(StructureDefinition original, ArtifactResolver source)
        {
            var generator = new SnapshotGenerator(source, markChanges: false);

            var expanded = (StructureDefinition)original.DeepCopy();

            Assert.IsTrue(original.IsExactly(expanded));

            generator.Generate(expanded);

            var areEqual = original.IsExactly(expanded);

            if (!areEqual)
            {
                File.WriteAllText("c:\\temp\\snapshotgen-source.xml", FhirSerializer.SerializeResourceToXml(original));
                File.WriteAllText("c:\\temp\\snapshotgen-dest.xml", FhirSerializer.SerializeResourceToXml(expanded));
            }

            Assert.IsTrue(areEqual);
        }
Beispiel #17
0
        public async Task <EmailData> GenerateAssignments(SubmissionData data)
        {
            var assignmentSnapshots = new List <List <Snapshot> >();

            foreach (var assignment in data.Course.Assignments)
            {
                var snapshots = await SnapshotGenerator.Generate(data, assignment);

                assignmentSnapshots.Add(snapshots.ToList());
            }

            if (HasSnapshotsToReport(assignmentSnapshots))
            {
                var survey = await GenerateSurvey(data, assignmentSnapshots);

                return(GetSurveyReport(survey));
            }

            return(NoSnapshotsToReport(data));
        }
        private void forDoc()
        {
            FhirXmlParser parser = new FhirXmlParser(new ParserSettings {
                AcceptUnknownMembers = true
            });
            IFhirReader xmlWithPatientData = null;
            var         patient            = parser.Parse <Patient>(xmlWithPatientData);

            // -----

            ArtifactResolver source = ArtifactResolver.CreateCachedDefault();
            var settings            = new SnapshotGeneratorSettings {
                IgnoreMissingTypeProfiles = true
            };
            StructureDefinition profile = null;

            var generator = new SnapshotGenerator(source, _settings);

            generator.Generate(profile);
        }
        private IBucket createSliceDefs()
        {
            var sd = _resolver.FindStructureDefinition("http://example.com/StructureDefinition/patient-telecom-reslice-ek");

            Assert.NotNull(sd);
            var snapgen = new SnapshotGenerator(_resolver);

            snapgen.Update(sd);

            // sd.Snapshot.Element.Where(e => e.Path.EndsWith(".telecom")).Select(e=>e.Path + " : " + e.Name ?? "").ToArray()

            var nav     = new ElementDefinitionNavigator(sd);
            var success = nav.JumpToFirst("Patient.telecom");

            Assert.True(success);
            //var xml = FhirSerializer.SerializeResourceToXml(sd);
            //File.WriteAllText(@"c:\temp\sdout.xml", xml);

            return(BucketFactory.CreateRoot(nav, _validator));
        }
        private void generateSnapshotAndCompare(StructureDefinition original, ArtifactResolver source)
        {
            // var generator = new SnapshotGenerator(source, markChanges: false);
            var generator = new SnapshotGenerator(source, _settings);

            var expanded = (StructureDefinition)original.DeepCopy();

            Assert.IsTrue(original.IsExactly(expanded));

            generator.Generate(expanded);

            var areEqual = original.IsExactly(expanded);

            if (!areEqual)
            {
                var tempPath = Path.GetTempPath();
                File.WriteAllText(Path.Combine(tempPath, "snapshotgen-source.xml"), FhirSerializer.SerializeResourceToXml(original));
                File.WriteAllText(Path.Combine(tempPath, "snapshotgen-dest.xml"), FhirSerializer.SerializeResourceToXml(expanded));
            }

            Assert.IsTrue(areEqual);
        }
        private void TestExpandElement(string srcProfileUrl, string expandElemPath)
        {
            const string Indent = "  ";

            // Prepare...
            var sd = _testSource.GetStructureDefinition(srcProfileUrl);

            Assert.IsNotNull(sd);
            Assert.IsNotNull(sd.Snapshot);

            var elems = sd.Snapshot.Element;

            Assert.IsNotNull(elems);

            Debug.WriteLine("Input:");
            Debug.WriteLine(string.Join(Environment.NewLine, elems.Where(e => e.Path.StartsWith(expandElemPath)).Select(e => Indent + e.Path)));

            var elem = elems.FirstOrDefault(e => e.Path == expandElemPath);

            Assert.IsNotNull(elem);

            // Test...
            var generator = new SnapshotGenerator(_testSource, _settings);
            var result    = generator.ExpandElement(elems, elem);

            // Verify results
            Debug.WriteLine("\r\nOutput:");
            Debug.WriteLine(string.Join(Environment.NewLine, result.Where(e => e.Path.StartsWith(expandElemPath)).Select(e => Indent + e.Path)));

            Assert.IsNotNull(elem.Type);
            var elemType = elem.Type.FirstOrDefault();
            var nameRef  = elem.NameReference;

            if (elemType != null)
            {
                // Validate type profile expansion
                var elemTypeCode = elemType.Code.Value;
                Assert.IsNotNull(elemTypeCode);
                var elemProfile = elemType.Profile.FirstOrDefault();
                var sdType      = elemProfile != null
                    ? _testSource.GetStructureDefinition(elemProfile)
                    : _testSource.GetStructureDefinitionForCoreType(elemTypeCode);

                Assert.IsNotNull(sdType);
                Assert.IsNotNull(sdType.Snapshot);

                Debug.WriteLine("\r\nType:");
                Debug.WriteLine(string.Join(Environment.NewLine, sdType.Snapshot.Element.Select(e => Indent + e.Path)));

                sdType.Snapshot.Rebase(expandElemPath);
                var typeElems = sdType.Snapshot.Element;

                Assert.IsTrue(result.Count == elems.Count + typeElems.Count - 1);
                Assert.IsTrue(result.Where(e => e.Path.StartsWith(expandElemPath)).Count() == typeElems.Count);

                var startPos = result.IndexOf(elem);
                for (int i = 0; i < typeElems.Count; i++)
                {
                    var path = typeElems[i].Path;
                    Assert.IsTrue(result[startPos + i].Path.EndsWith(path, StringComparison.OrdinalIgnoreCase));
                }
            }
            else if (nameRef != null)
            {
                // Validate name reference expansion
                var nav = new ElementNavigator(elems);
                Assert.IsTrue(nav.JumpToNameReference(nameRef));
                var prefix = nav.Path;
                Assert.IsTrue(nav.MoveToFirstChild());
                var pos = result.IndexOf(elem);

                Debug.WriteLine("\r\nName Reference:");
                do
                {
                    Debug.WriteLine(Indent + nav.Path);
                    var srcPath = nav.Path.Substring(prefix.Length);
                    var tgtPath = result[++pos].Path.Substring(expandElemPath.Length);
                    Assert.AreEqual(srcPath, tgtPath);
                } while (nav.MoveToNext());
            }
        }
 /// <summary>Creates a new instance of the <see cref="SnapshotSource"/> for the specified snapshot generator instance.</summary>
 /// <param name="generator">A <see cref="SnapshotGenerator"/> instance.</param>
 public SnapshotSource(SnapshotGenerator generator)
 {
     Generator = generator ?? throw Error.ArgumentNull(nameof(generator));
 }
 /// <summary>Creates a new instance of the <see cref="SnapshotSource"/> for the specified internal resolver.</summary>
 /// <param name="source">An internal <see cref="IResourceResolver"/> instance. The implementation should be idempotent (i.e. cached), so the generated snapshots are persisted in memory.</param>
 /// <param name="settings">Configuration settings for the snapshot generator.</param>
 public SnapshotSource(IResourceResolver source, SnapshotGeneratorSettings settings)
 {
     // SnapshotGenerator ctor will throw if source or settings are null
     Generator = new SnapshotGenerator(source, settings);
 }
Beispiel #24
0
 void GetSnapshotGenerator()
 {
     snapshotGenerator = this.gameObject.GetComponent <SnapshotGenerator>();
 }
Beispiel #25
0
        public void Init()
        {
            Root = Path.Combine(Directory.GetCurrentDirectory(), nameof(SnapshotGeneratorTests));

            Submission = new StudentSubmissionDto()
            {
                SnapshotFolder = MockSnapshots.GetCalculatorSnapshots(),
                StudentName    = StudentName,
                ClassName      = "Class",
            };
            Assignment = new Assignment()
            {
                Id       = AssignmentId,
                Filename = MockSnapshots.GetCalculatorFile(),
                Solution = new AssignmentSolution()
                {
                    Files = MockSnapshots.GetCalculatorSolutionFiles(),
                    Name  = MockSnapshots.GetCalculatorClassName(),
                }
            };

            Student =
                new Student()
            {
                Id          = StudentId,
                Name        = StudentName,
                Submissions = new List <SnapshotSubmission>()
                {
                    new SnapshotSubmission()
                    {
                        Id = FirstCalculatorSubmissionId,
                        CreatedDateTime = MockSnapshots.GetFirstCalculatorSnapshotTime(),
                    }
                },
                Snapshots = new List <Snapshot>()
                {
                    new Snapshot()
                    {
                        Id = FirstCalculatorSubmissionId,
                        SnapshotSubmission = new SnapshotSubmission()
                        {
                            Id = FirstCalculatorSubmissionId,
                            CreatedDateTime = MockSnapshots.GetFirstCalculatorSnapshotTime(),
                            Files           = MockSnapshots.GetFirstCalculatorSnapshotFile(),
                        },
                        AssignmentId = AssignmentId
                    },
                    new Snapshot()
                    {
                        Id = LastSnapshotId,
                        SnapshotSubmission = new SnapshotSubmission()
                        {
                            Id = 2,
                            CreatedDateTime = MockSnapshots.GetSecondCalculatorSnapshotTime(),
                            Files           = MockSnapshots.GetSecondCalculatorSnapshotFile(),
                        },
                        AssignmentId = AssignmentId
                    }
                }
            };
            Students = new MockRepository <Student, string>();
            Students.Add(Student);
            Snapshots          = new MockRepository <Snapshot, int>();
            SnapshotSubmission = new MockRepository <SnapshotSubmission, int>(
                new List <SnapshotSubmission>()
            {
                new SnapshotSubmission()
                {
                    Id = FirstCalculatorSubmissionId,
                    CreatedDateTime = MockSnapshots.GetFirstCalculatorSnapshotTime()
                }
            });
            Generator = new SnapshotGenerator(new MockSnapshotDateConverter(), SnapshotSubmission,
                                              Snapshots, new MockSnapshotReportGenerate(), Students,
                                              new MockAbstractSyntaxClassTreeExtractor(),
                                              new MockAbstractSyntaxTreeGenerator());
            Data = new SubmissionData(Submission, Root)
            {
                Student = Student
            };
            GeneratorObj = new SnapshotGenerator.SnapshotGeneratorObj(Data, Assignment, Generator);
        }