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); }
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); }
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); }
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); }
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(); }
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); }
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"); }
/// <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); } } }
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); }
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); }
void GetSnapshotGenerator() { snapshotGenerator = this.gameObject.GetComponent <SnapshotGenerator>(); }
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); }