Loading...
--- dyld/dyld-1066.8/testing/builder-unit-tests/CacheLayoutTests.mm
+++ /dev/null
@@ -1,293 +0,0 @@
-
-/* -*- mode: C++; c-basic-offset: 4; tab-width: 4 -*-
- *
- * Copyright (c) 2021 Apple Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-#import <XCTest/XCTest.h>
-
-#include "NewSharedCacheBuilder.h"
-#include "BuilderFileSystem.h"
-
-using namespace cache_builder;
-
-@interface CacheLayoutTests : XCTestCase
-
-@end
-
-@implementation CacheLayoutTests
-{
- // Everyone shares a default file system
- const FileSystemMRM fileSystem;
-
- // Parameters to Options
- //std::string_view archName;
- //dyld3::Platform platform;
- bool dylibsRemovedFromDisk;
- bool isLocallyBuiltCache;
- CacheKind cacheKind;
- bool forceDevelopmentSubCacheSuffix;
-}
-
-- (void)setUp {
- // Put setup code here. This method is called before the invocation of each test method in the class.
-
- // Reset default options
- dylibsRemovedFromDisk = true;
- isLocallyBuiltCache = true;
- cacheKind = CacheKind::development;
- forceDevelopmentSubCacheSuffix = false;
-}
-
-- (void)tearDown {
- // Put teardown code here. This method is called after the invocation of each test method in the class.
-}
-
-// macOS caches should have no .development or other suffixes, just the number
-- (void)testSubCacheNames_macOS {
- // Arrange: mock up builder and subcaches
- cache_builder::BuilderOptions options("x86_64", dyld3::Platform::macOS,
- dylibsRemovedFromDisk, isLocallyBuiltCache, cacheKind,
- forceDevelopmentSubCacheSuffix);
- SharedCacheBuilder builder(options, fileSystem);
-
- // Add a main subCache
- builder.subCaches.reserve(3);
- SubCache& mainSubCache = builder.subCaches.emplace_back(SubCache::makeMainCache(options, true));
- SubCache& subCache1 = builder.subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& subCache2 = builder.subCaches.emplace_back(SubCache::makeSubCache(options));
- mainSubCache.subCaches.push_back(&subCache1);
- mainSubCache.subCaches.push_back(&subCache2);
-
- // Act:
- builder.setSubCacheNames();
-
- // Assert:
- XCTAssertTrue(mainSubCache.fileSuffix == "");
- XCTAssertTrue(subCache1.fileSuffix == ".01");
- XCTAssertTrue(subCache2.fileSuffix == ".02");
-}
-
-// Simulator caches should have no .development or other suffixes, just the number
-- (void)testSubCacheNames_iOS_Simulator {
- // Arrange: mock up builder and subcaches
- cache_builder::BuilderOptions options("arm64", dyld3::Platform::iOS_simulator,
- dylibsRemovedFromDisk, isLocallyBuiltCache, cacheKind,
- forceDevelopmentSubCacheSuffix);
- SharedCacheBuilder builder(options, fileSystem);
-
- // Add a main subCache
- builder.subCaches.reserve(3);
- SubCache& mainSubCache = builder.subCaches.emplace_back(SubCache::makeMainCache(options, true));
- SubCache& subCache1 = builder.subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& subCache2 = builder.subCaches.emplace_back(SubCache::makeSubCache(options));
- mainSubCache.subCaches.push_back(&subCache1);
- mainSubCache.subCaches.push_back(&subCache2);
-
- // Act:
- builder.setSubCacheNames();
-
- // Assert:
- XCTAssertTrue(mainSubCache.fileSuffix == "");
- XCTAssertTrue(subCache1.fileSuffix == ".01");
- XCTAssertTrue(subCache2.fileSuffix == ".02");
-}
-
-// iOS development main caches should end in .developent
-// iOS sub caches shouldn't have an extension
-- (void)testSubCacheNames_iOS_development {
- // Arrange: mock up builder and subcaches
- cacheKind = CacheKind::universal;
- cache_builder::BuilderOptions options("arm64", dyld3::Platform::iOS,
- dylibsRemovedFromDisk, isLocallyBuiltCache, cacheKind,
- forceDevelopmentSubCacheSuffix);
- SharedCacheBuilder builder(options, fileSystem);
-
- // Add a main subCache
- builder.subCaches.reserve(3);
- SubCache& mainSubCache = builder.subCaches.emplace_back(SubCache::makeMainCache(options, true));
- SubCache& subCache1 = builder.subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& subCache2 = builder.subCaches.emplace_back(SubCache::makeSubCache(options));
- mainSubCache.subCaches.push_back(&subCache1);
- mainSubCache.subCaches.push_back(&subCache2);
-
- // Act:
- builder.setSubCacheNames();
-
- // Assert:
- XCTAssertTrue(mainSubCache.fileSuffix == ".development");
- XCTAssertTrue(subCache1.fileSuffix == ".01");
- XCTAssertTrue(subCache2.fileSuffix == ".02");
-}
-
-// iOS customer main caches should have no extension
-// iOS sub caches shouldn't have an extension
-- (void)testSubCacheNames_iOS_customer {
- // Arrange: mock up builder and subcaches
- cacheKind = CacheKind::universal;
- cache_builder::BuilderOptions options("arm64", dyld3::Platform::iOS,
- dylibsRemovedFromDisk, isLocallyBuiltCache, cacheKind,
- forceDevelopmentSubCacheSuffix);
- SharedCacheBuilder builder(options, fileSystem);
-
- // Add a main subCache
- builder.subCaches.reserve(3);
- SubCache& mainSubCache = builder.subCaches.emplace_back(SubCache::makeMainCache(options, false));
- SubCache& subCache1 = builder.subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& subCache2 = builder.subCaches.emplace_back(SubCache::makeSubCache(options));
- mainSubCache.subCaches.push_back(&subCache1);
- mainSubCache.subCaches.push_back(&subCache2);
-
- // Act:
- builder.setSubCacheNames();
-
- // Assert:
- XCTAssertTrue(mainSubCache.fileSuffix == "");
- XCTAssertTrue(subCache1.fileSuffix == ".01");
- XCTAssertTrue(subCache2.fileSuffix == ".02");
-}
-
-// This combines all of the above names
-// main caches should have either .development or no extension
-// sub caches should either no extension, .dylddata, or .dyldlinkedit
-// stub caches should have no extension or .development
-// symbols files should end in .symbols
-- (void)testSubCacheNames_iOS_universal {
- // Arrange: mock up builder and subcaches
- cacheKind = CacheKind::universal;
- cache_builder::BuilderOptions options("arm64", dyld3::Platform::iOS,
- dylibsRemovedFromDisk, isLocallyBuiltCache, cacheKind,
- forceDevelopmentSubCacheSuffix);
- SharedCacheBuilder builder(options, fileSystem);
- auto& subCaches = builder.subCaches;
-
- // Add the following:
- // main dev cache
- // main customer cache
- // text subcache
- // stubs dev cache
- // stubs customer cache
- // text subcache
- // stubs dev cache
- // stubs customer cache
- // data sub cache
- // linkedit sub cache
- // text subcache
- // stubs dev cache
- // stubs customer cache
- // text subcache
- // stubs dev cache
- // stubs customer cache
- // data sub cache
- // linkedit sub cache
- subCaches.reserve(20);
- SubCache& mainDevCache = subCaches.emplace_back(SubCache::makeMainCache(options, true));
- SubCache& mainCustCache = subCaches.emplace_back(SubCache::makeMainCache(options, false));
- SubCache& textCache1 = subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& stubsDevCache2 = subCaches.emplace_back(SubCache::makeStubsCache(options, true));
- SubCache& stubsCustCache2 = subCaches.emplace_back(SubCache::makeStubsCache(options, false));
- SubCache& textCache3 = subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& stubsDevCache4 = subCaches.emplace_back(SubCache::makeStubsCache(options, true));
- SubCache& stubsCustCache4 = subCaches.emplace_back(SubCache::makeStubsCache(options, false));
- SubCache& dataCache5 = subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& linkeditCache6 = subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& textCache7 = subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& stubsDevCache8 = subCaches.emplace_back(SubCache::makeStubsCache(options, true));
- SubCache& stubsCustCache8 = subCaches.emplace_back(SubCache::makeStubsCache(options, false));
- SubCache& textCache9 = subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& stubsDevCache10 = subCaches.emplace_back(SubCache::makeStubsCache(options, true));
- SubCache& stubsCustCache10 = subCaches.emplace_back(SubCache::makeStubsCache(options, false));
- SubCache& dataCache11 = subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& linkeditCache12 = subCaches.emplace_back(SubCache::makeSubCache(options));
- SubCache& symbolsCache = subCaches.emplace_back(SubCache::makeSymbolsCache());
-
- // Add some data/linkedit to the required subcaches
- ObjCStringsChunk dataChunk1;
- ObjCStringsChunk linkeditChunk1;
- ObjCStringsChunk dataChunk2;
- ObjCStringsChunk dataConstChunk2;
- ObjCStringsChunk authChunk2;
- ObjCStringsChunk authConstChunk2;
- ObjCStringsChunk linkeditChunk2;
- dataCache5.addDataChunk(&dataChunk1);
- linkeditCache6.addLinkeditChunk(&linkeditChunk1);
- dataCache11.addDataChunk(&dataChunk2);
- dataCache11.addDataConstChunk(&dataConstChunk2);
- dataCache11.addAuthChunk(&authChunk2);
- dataCache11.addAuthConstChunk(&authConstChunk2);
- linkeditCache12.addLinkeditChunk(&linkeditChunk2);
-
- // Track all subCaches on the main caches
- // Development
- mainDevCache.subCaches.push_back(&textCache1);
- mainDevCache.subCaches.push_back(&stubsDevCache2);
- mainDevCache.subCaches.push_back(&textCache3);
- mainDevCache.subCaches.push_back(&stubsDevCache4);
- mainDevCache.subCaches.push_back(&dataCache5);
- mainDevCache.subCaches.push_back(&linkeditCache6);
- mainDevCache.subCaches.push_back(&textCache7);
- mainDevCache.subCaches.push_back(&stubsDevCache8);
- mainDevCache.subCaches.push_back(&textCache9);
- mainDevCache.subCaches.push_back(&stubsDevCache10);
- mainDevCache.subCaches.push_back(&dataCache11);
- mainDevCache.subCaches.push_back(&linkeditCache12);
-
- // Customer
- mainCustCache.subCaches.push_back(&textCache1);
- mainCustCache.subCaches.push_back(&stubsCustCache2);
- mainCustCache.subCaches.push_back(&textCache3);
- mainCustCache.subCaches.push_back(&stubsCustCache4);
- mainCustCache.subCaches.push_back(&dataCache5);
- mainCustCache.subCaches.push_back(&linkeditCache6);
- mainCustCache.subCaches.push_back(&textCache7);
- mainCustCache.subCaches.push_back(&stubsCustCache8);
- mainCustCache.subCaches.push_back(&textCache9);
- mainCustCache.subCaches.push_back(&stubsCustCache10);
- mainCustCache.subCaches.push_back(&dataCache11);
- mainCustCache.subCaches.push_back(&linkeditCache12);
-
- // Act:
- builder.setSubCacheNames();
-
- // Assert:
- XCTAssertTrue(mainDevCache.fileSuffix == ".development");
- XCTAssertTrue(mainCustCache.fileSuffix == "");
- XCTAssertTrue(textCache1.fileSuffix == ".01");
- XCTAssertTrue(stubsDevCache2.fileSuffix == ".02.development");
- XCTAssertTrue(stubsCustCache2.fileSuffix == ".02");
- XCTAssertTrue(textCache3.fileSuffix == ".03");
- XCTAssertTrue(stubsDevCache4.fileSuffix == ".04.development");
- XCTAssertTrue(stubsCustCache4.fileSuffix == ".04");
- XCTAssertTrue(dataCache5.fileSuffix == ".05.dylddata");
- XCTAssertTrue(linkeditCache6.fileSuffix == ".06.dyldlinkedit");
- XCTAssertTrue(textCache7.fileSuffix == ".07");
- XCTAssertTrue(stubsDevCache8.fileSuffix == ".08.development");
- XCTAssertTrue(stubsCustCache8.fileSuffix == ".08");
- XCTAssertTrue(textCache9.fileSuffix == ".09");
- XCTAssertTrue(stubsDevCache10.fileSuffix == ".10.development");
- XCTAssertTrue(stubsCustCache10.fileSuffix == ".10");
- XCTAssertTrue(dataCache11.fileSuffix == ".11.dylddata");
- XCTAssertTrue(linkeditCache12.fileSuffix == ".12.dyldlinkedit");
- XCTAssertTrue(symbolsCache.fileSuffix == ".symbols");
-}
-
-@end