예제 #1
0
        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);
        }
예제 #2
0
        /// <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());
        }
예제 #3
0
        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);
 }