コード例 #1
0
        public void RootTranslation()
        {
            var rootTranslator = new RootTranslator();
            var pathTable      = Context.PathTable;

            // Source is shorter than target
            var shortCaseSourceTranslatedRootPath = GetFullPath(pathTable, "ShortSource").Expand(pathTable);
            var shortCaseTargetTranslatedRootPath = GetFullPath(pathTable, "Short___Target").Expand(pathTable);

            rootTranslator.AddTranslation(
                shortCaseSourceTranslatedRootPath.ExpandedPath,
                shortCaseTargetTranslatedRootPath.ExpandedPath);

            // Source is longer than target
            var longCaseSourceTranslatedRootPath = GetFullPath(pathTable, "LongSourceSource").Expand(pathTable);
            var longCaseTargetTranslatedRootPath = GetFullPath(pathTable, "LongTarget").Expand(pathTable);

            rootTranslator.AddTranslation(
                longCaseSourceTranslatedRootPath.ExpandedPath,
                longCaseTargetTranslatedRootPath.ExpandedPath);

            rootTranslator.Seal();

            var cache = new CacheCoreArtifactContentCache(Session, rootTranslator);

            // SHORTER SOURCE, SAME ROOT: Path should NOT be translated
            VerifyExpandedPathForCacheEquals(cache, shortCaseSourceTranslatedRootPath, shortCaseSourceTranslatedRootPath);

            // LONGER SOURCE, SAME ROOT: Path SHOULD be translated
            VerifyExpandedPathForCacheEquals(cache, longCaseSourceTranslatedRootPath, longCaseTargetTranslatedRootPath);
        }
コード例 #2
0
 public CacheCoreFingerprintStoreTests(ITestOutputHelper output)
     : base(output)
 {
     Context          = BuildXLContext.CreateInstanceForTesting();
     FingerprintStore = new CacheCoreFingerprintStore(Session);
     ContentCache     = new CacheCoreArtifactContentCache(Session, rootTranslator: null);
 }
コード例 #3
0
        private static async Task LoadContentAndExpectAvailable(CacheCoreArtifactContentCache cache, ContentHash hash)
        {
            Possible <ContentAvailabilityBatchResult> possiblyLoaded =
                await cache.TryLoadAvailableContentAsync(new List <ContentHash>() { hash });

            XAssert.IsTrue(possiblyLoaded.Succeeded);
            XAssert.IsTrue(possiblyLoaded.Result.AllContentAvailable);
        }
コード例 #4
0
        private void VerifyExpandedPathForCacheEquals(CacheCoreArtifactContentCache cache,
                                                      ExpandedAbsolutePath originalRoot,
                                                      ExpandedAbsolutePath expectedRoot)
        {
            var    pathTable = Context.PathTable;
            string fileName  = "bits.txt";
            var    originalRootExpandedPath = AbsolutePath.Create(pathTable, R(originalRoot.ExpandedPath, fileName)).Expand(pathTable);
            var    expectedRootExpandedPath = AbsolutePath.Create(pathTable, R(expectedRoot.ExpandedPath, fileName)).Expand(pathTable);

            Assert.Equal(
                expectedRootExpandedPath.ExpandedPath,
                cache.GetExpandedPathForCache(originalRootExpandedPath));
        }
コード例 #5
0
ファイル: CacheInitializer.cs プロジェクト: kittinap/kunnjae
        public override EngineCache CreateCacheForContext(PipExecutionContext context)
        {
            IArtifactContentCache contentCache = new CacheCoreArtifactContentCache(
                m_session,
                rootTranslator: m_rootTranslator);

            ITwoPhaseFingerprintStore twoPhase;

            if (IsFingerprintLookupEnabled)
            {
                twoPhase = new CacheCoreFingerprintStore(m_session);
            }
            else
            {
                twoPhase = new EmptyTwoPhaseFingerprintStore();
            }

            return(new EngineCache(contentCache, twoPhase));
        }
コード例 #6
0
ファイル: CacheInitializer.cs プロジェクト: microsoft/BuildXL
        public override EngineCache CreateCacheForContext()
        {
            IArtifactContentCache contentCache = new CacheCoreArtifactContentCache(
                m_session,
                rootTranslator: m_rootTranslator,
                replaceExistingFileOnMaterialization: m_replaceExistingFileOnMaterialization);

            ITwoPhaseFingerprintStore twoPhase;

            if (IsFingerprintLookupEnabled)
            {
                twoPhase = new CacheCoreFingerprintStore(m_session);
            }
            else
            {
                twoPhase = new EmptyTwoPhaseFingerprintStore();
            }

            return(new EngineCache(contentCache, twoPhase));
        }
コード例 #7
0
        public void RootTranslationDifferentRoots()
        {
            var rootTranslator = new RootTranslator();
            var pathTable      = Context.PathTable;

            // Source is shorter than target but has different root
            var shortCaseChangeRootSourceTranslatedRootPath = ChangeRoot(GetFullPath(pathTable, "ShortChangeRootSrc"), pathTable, newRoot: 'A');
            var shortCaseChangeRootTargetTranslatedRootPath = ChangeRoot(GetFullPath(pathTable, "ShortChangeRootTarget"), pathTable, newRoot: 'B');

            rootTranslator.AddTranslation(
                shortCaseChangeRootSourceTranslatedRootPath.ExpandedPath,
                shortCaseChangeRootTargetTranslatedRootPath.ExpandedPath);

            rootTranslator.Seal();

            var cache = new CacheCoreArtifactContentCache(Session, rootTranslator);

            // SHORTER SOURCE, DIFFERENT ROOT: Path SHOULD be translated
            VerifyExpandedPathForCacheEquals(cache, shortCaseChangeRootSourceTranslatedRootPath, shortCaseChangeRootTargetTranslatedRootPath);
        }