Пример #1
0
 public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
 {
     // Need to save all this events to allow comparison. It might be possible to
     // reduce the set as an optiomization once all the failed pip imputs have been stablished
     // The good thing here is that there is no need at this point to convert all the paths into strings
     m_fileContentMap[data.FileArtifact.Path] = data;
 }
Пример #2
0
        public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
        {
            m_statistics.FileArtifactContentDecidedEventCount++;

            if (data.FileArtifact.IsOutputFile && data.FileContentInfo.HasKnownLength)
            {
                m_statistics.FileArtifactOutputWithKnownLengthCount++;

                if (!m_fileSizes.ContainsKey(data.FileArtifact.Path))
                {
                    m_fileSizes.Add(data.FileArtifact.Path, data.FileContentInfo.Length);
                }

                m_producedFiles.AddOrUpdate(
                    data.FileArtifact.Path,
                    new OutputFile()
                {
                    FileArtifact = data.FileArtifact, Hash = data.FileContentInfo.Hash
                },
                    (_, file) =>
                {
                    file.FileArtifact = data.FileArtifact;
                    file.Hash         = data.FileContentInfo.Hash;
                    return(file);
                });
            }

            GetWorkerAnalyzer().FileArtifactContentDecided(data);
        }
Пример #3
0
            public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
            {
                // need to save all this events to allow comparison
                var path = ToDisplayFilePath(data.FileArtifact.Path).ToLowerInvariant();

                m_fileContentMap[path] = data;
            }
Пример #4
0
        private void FileArtifactContentDecidedInternal(FileArtifactContentDecidedEventData data)
        {
            m_statistics.FileArtifactContentDecidedEventCount++;

            if (data.FileArtifact.IsOutputFile && data.FileContentInfo.HasKnownLength)
            {
                m_statistics.FileArtifactOutputWithKnownLengthCount++;

                ContentFlags contentFlags = default;
                switch (data.OutputOrigin)
                {
                case PipOutputOrigin.DeployedFromCache:
                    contentFlags = ContentFlags.MaterializedFromCache;
                    break;

                case PipOutputOrigin.Produced:
                    contentFlags = ContentFlags.Produced;
                    break;
                    // We ignore the following cases:
                    // PipOutputOrigin.NotMaterialized - we cannot infer the current or future materialization status of a file
                    // PipOutputOrigin.UpToDate - not relevant to this analyzer
                }

                UpdateOrAddFile(
                    data.FileArtifact,
                    data.FileContentInfo.Length,
                    contentFlags,
                    FromContentHash(data.FileContentInfo.Hash),
                    data.FileArtifact.RewriteCount);

                m_decidedFiles.Add(data.FileArtifact);
            }
        }
Пример #5
0
 public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
 {
     if (data.FileArtifact.Path == SpecPath)
     {
         m_writer.WriteLine("Hash: {0}", data.FileContentInfo.Hash.ToString());
         m_writer.WriteLine("Size: {0}", data.FileContentInfo.Length);
         m_writer.WriteLine();
     }
 }
Пример #6
0
        /*
         * The methods below are execution log events which populate the analysis model
         * based on converted data for the events
         */

        public void FileArtifactContentDecided(uint workerId, FileArtifactContentDecidedEventData data)
        {
            var convertedFileArtifact = Convert(data.FileArtifact);

            if (!convertedFileArtifact.Path.IsValid)
            {
                return;
            }

            ConvertedNewModel.AddFileContentInfo(workerId, convertedFileArtifact, data.FileContentInfo);
        }
Пример #7
0
            public void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
            {
                if (data.FileArtifact.IsOutputFile && data.FileContentInfo.HasKnownLength)
                {
                    if (m_deployedFiles.TryAdd(data.FileArtifact, data.FileContentInfo.Length))
                    {
                        m_sizeByExtension.AddOrUpdate(data.FileArtifact.Path.GetExtension(m_analyzer.PathTable), data.FileContentInfo.Length, (k, v) => v, (k, v, u) => v + u);
                    }

                    AddFlag(data.FileArtifact, ContentFlag.Deployed);
                }
            }
Пример #8
0
 public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
 {
     // before doing anything, lets skip the empty file, since it does not bring anything to the analysis
     if (data.FileContentInfo.Length > 0)
     {
         string extension = Path.GetExtension(data.FileArtifact.Path.ToString(CachedGraph.Context.PathTable));
         m_artifactsPerExtension.Add(extension, data.FileArtifact);
         m_countFilesPerExtension.Add(extension, 1);
         m_fileContentMap[data.FileArtifact] = data.FileContentInfo;
     }
     else
     {
         m_countEmptyArtifacts.Add(data.FileArtifact, 1);
     }
 }
Пример #9
0
        /// <summary>
        /// Override event to capture its data and store it in the protobuf
        /// </summary>
        public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
        {
            var value = data.ToFileArtifactContentDecidedEvent(WorkerID.Value, PathTable, m_nameExpander);
            var key   = new EventKey
            {
                EventTypeID = Xldb.Proto.ExecutionEventId.FileArtifactContentDecided,
                FileArtifactContentDecidedKey = AbsolutePathToXldbString(data.FileArtifact.Path),
                FileRewriteCount = data.FileArtifact.RewriteCount
            };

            var keyArr   = key.ToByteArray();
            var valueArr = value.ToByteArray();

            WriteToDb(keyArr, valueArr, XldbDataStore.EventColumnFamilyName);
            AddToDbStorageDictionary(DBStoredTypes.FileArtifactContentDecided, keyArr.Length + valueArr.Length);
        }
Пример #10
0
 /// <inheritdoc />
 public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
 {
     m_model.AddFileContentInfo(CurrentEventWorkerId, data.FileArtifact, data.FileContentInfo);
 }
Пример #11
0
 /// <inheritdoc />
 public virtual void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
 {
     ReportUnhandledEvent(data);
 }
Пример #12
0
        public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
        {
            var entry = GetEntry(data.FileArtifact);

            entry.Size = data.FileContentInfo.Length;
        }
Пример #13
0
 /// <inheritdoc />
 public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
 {
     m_model.FileContentMap.GetOrAdd((CurrentEventWorkerId, data.FileArtifact), data.FileContentInfo);
 }
Пример #14
0
 public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
 {
     GetWorkerAnalyzer().FileArtifactContentDecided(data);
 }
Пример #15
0
        /// <nodoc />
        public static Xldb.FileArtifactContentDecidedEvent ToFileArtifactContentDecidedEvent(this FileArtifactContentDecidedEventData data, uint workerID, PathTable pathTable)
        {
            var Uuid = Guid.NewGuid().ToString();

            return(new Xldb.FileArtifactContentDecidedEvent()
            {
                UUID = Uuid,
                WorkerID = workerID,
                FileArtifact = data.FileArtifact.ToFileArtifact(pathTable),
                FileContentInfo = new Xldb.FileContentInfo
                {
                    LengthAndExistence = data.FileContentInfo.SerializedLengthAndExistence,
                    Hash = new Xldb.ContentHash()
                    {
                        Value = data.FileContentInfo.Hash.ToString()
                    }
                },
                OutputOrigin = (Xldb.PipOutputOrigin)data.OutputOrigin
            });
        }
Пример #16
0
 public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
 {
     m_fileHashes[data.FileArtifact] = data.FileContentInfo.Hash;
     m_fileInfos[data.FileArtifact]  = data.FileContentInfo;
 }
Пример #17
0
 /// <nodoc />
 public static FileArtifactContentDecidedEvent ToFileArtifactContentDecidedEvent(this FileArtifactContentDecidedEventData data, uint workerID, PathTable pathTable)
 {
     return(new FileArtifactContentDecidedEvent()
     {
         WorkerID = workerID,
         FileArtifact = data.FileArtifact.ToFileArtifact(pathTable),
         FileContentInfo = new FileContentInfo
         {
             LengthAndExistence = data.FileContentInfo.SerializedLengthAndExistence,
             Hash = new ContentHash()
             {
                 Value = data.FileContentInfo.Hash.ToString()
             }
         },
         OutputOrigin = (PipOutputOrigin)data.OutputOrigin
     });
 }
Пример #18
0
 /// <nodoc />
 public static FileArtifactContentDecidedEvent ToFileArtifactContentDecidedEvent(this FileArtifactContentDecidedEventData data, uint workerID, PathTable pathTable, NameExpander nameExpander)
 {
     return(new FileArtifactContentDecidedEvent()
     {
         WorkerID = workerID,
         FileArtifact = data.FileArtifact.ToFileArtifact(pathTable, nameExpander),
         FileContentInfo = new FileContentInfo
         {
             LengthAndExistence = new LengthAndExistence()
             {
                 HasKnownLength = data.FileContentInfo.HasKnownLength,
                 Length = data.FileContentInfo.Length,
                 Existence = data.FileContentInfo.Existence == null ? 0 : (PathExistence)(data.FileContentInfo.Existence + 1)
             },
             Hash = data.FileContentInfo.Hash.ToContentHash()
         },
         OutputOrigin = (PipOutputOrigin)(data.OutputOrigin + 1)
     });
 }
Пример #19
0
 /// <summary>
 /// File artifact content (size, origin) is now known; create a FileTable entry for this file.
 /// </summary>
 public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
 => CallSerialized(FileArtifactContentDecidedInternal, data);
Пример #20
0
 public override void FileArtifactContentDecided(FileArtifactContentDecidedEventData data)
 {
     m_fileContentMap[data.FileArtifact] = data.FileContentInfo;
 }
Пример #21
0
 public bool TryGetFileArtifactContentDecidedEventData(string path, out FileArtifactContentDecidedEventData data)
 {
     return(m_fileContentMap.TryGetValue(path, out data));
 }