public ArtifactDescriptor Save(PluginDescriptor owner, string contentType, object data) { var folder = Path.Combine(_baseFolder, owner.Name); var descriptor = new ArtifactDescriptor { Location = folder, Owner = owner }; Directory.CreateDirectory(folder); var formatter = _formatters.Find(contentType); var filepath = Path.Combine(folder, Path.ChangeExtension(descriptor.Id.ToString(), DefaultExtension)); using (var sw = new FileStream(filepath, FileMode.Create, FileAccess.Write, FileShare.None)) { using (var datastream = formatter.Serialize(data)) { datastream.ChunkedOperation(4000, (buffer, size) => { sw.Write(buffer, 0, size); }); } } return(descriptor); }
/// <summary> /// Override this if you want to alter the publishing behaviour /// </summary> /// <param name="rowcount"></param> /// <param name="duration"></param> /// <param name="artifactDescriptor"></param> protected virtual void Publish(int rowcount, TimeSpan duration, ArtifactDescriptor artifactDescriptor) { var data = HealthCheckData.For(Identity, DescribeNotification()) .ResultIs(DecideResult(rowcount)) .ResultCountIs(rowcount) .SetDuration(duration) .AddProperty("Rowcount", rowcount.ToString(CultureInfo.InvariantCulture)) .AddProperty("Criteria", _baseConfig.Query); Publish(NotificationRequestBuilder.For(_config.NotificationMode, data) .AssociateArtifact(artifactDescriptor) .Build()); }
public override void Execute() { var stopwatch = new Stopwatch(); stopwatch.Start(); var data = RunQuery(_config.Query); stopwatch.Stop(); ArtifactDescriptor artifactDescriptor = null; if (_config.GenerateArtifacts.GetValueOrDefault(false)) { artifactDescriptor = ArtifactManager.Save(Identity, ArtifactManager.KnownContentTypes.TabSeparated, data); } Publish(data.Rows.Count, stopwatch.Elapsed, artifactDescriptor); }
public void TheArtifactIsSaved() { _artifactDescriptor = _sut.Save(_pluginDescriptor, ArtifactContentTypes.CSV, _data); }
public NotificationRequestBuilder AssociateArtifact(ArtifactDescriptor artifactDescriptor) { _request.AssociateArtifact(artifactDescriptor); return(this); }