public void IncrementalBuild_WhenBundleTimestampChanges_CopiesNewFile() { var group = Settings.CreateGroup("MyTestGroup", true, false, false, null, typeof(BundledAssetGroupSchema)); var spriteEntry = Settings.CreateOrMoveEntry(CreateTexture($"{m_SingleTestAssetFolder}/testTexture.png"), group, false, false); Settings.profileSettings.SetValue(Settings.activeProfileId, AddressableAssetSettings.kLocalBuildPath, m_SingleTestBuildFolder); Settings.profileSettings.SetValue(Settings.activeProfileId, AddressableAssetSettings.kLocalLoadPath, "Library/LocalLoadPath"); IDataBuilder b = GetBuilderOfType(Settings, typeof(BuildScriptPackedMode)); b.BuildData <AddressableAssetBuildResult>(new AddressablesDataBuilderInput(Settings)); string[] buildFiles = Directory.GetFiles(m_SingleTestBuildFolder); byte[] initialBundleBytes = File.ReadAllBytes(buildFiles[0]); File.Delete(buildFiles[0]); File.WriteAllText(buildFiles[0], "content"); File.SetLastWriteTime(buildFiles[0], new DateTime(2019, 1, 1)); b.BuildData <AddressableAssetBuildResult>(new AddressablesDataBuilderInput(Settings)); Assert.AreEqual(1, buildFiles.Length, "There should only be one bundle file in the build output folder"); CollectionAssert.AreEqual(initialBundleBytes, File.ReadAllBytes(buildFiles[0])); }
public void IncrementalBuild_WhenBundleTimestampUnchanged_DoesNotCopy() { AddressableAssetBuildResult result; var group = Settings.CreateGroup("MyTestGroup", true, false, false, null, typeof(BundledAssetGroupSchema)); var spriteEntry = Settings.CreateOrMoveEntry(CreateTexture($"{m_SingleTestAssetFolder}/testTexture.png"), group, false, false); Settings.profileSettings.SetValue(Settings.activeProfileId, AddressableAssetSettings.kLocalBuildPath, m_SingleTestBuildFolder); Settings.profileSettings.SetValue(Settings.activeProfileId, AddressableAssetSettings.kLocalLoadPath, "Library/LocalLoadPath"); IDataBuilder b = GetBuilderOfType(Settings, typeof(BuildScriptPackedMode)); b.BuildData <AddressableAssetBuildResult>(new AddressablesDataBuilderInput(Settings)); string[] buildFiles = Directory.GetFiles(m_SingleTestBuildFolder); // Build again with a lock on the output bundle. This is how we ensure that the bundle is not written again using (File.Open(buildFiles[0], FileMode.Open, FileAccess.ReadWrite, FileShare.None)) result = b.BuildData <AddressableAssetBuildResult>(new AddressablesDataBuilderInput(Settings)); Assert.AreEqual(1, buildFiles.Length, "There should only be one bundle file in the build output folder"); Assert.IsTrue(string.IsNullOrEmpty(result.Error)); }
void RunBuilder(AddressableAssetSettings settings) { var buildContext = new AddressablesDataBuilderInput(settings); buildContext.RuntimeSettingsFilename = "settings" + m_UniqueTestName + ".json"; buildContext.RuntimeCatalogFilename = "catalog" + m_UniqueTestName + ".json"; buildContext.PathFormat = "{0}Library/com.unity.addressables/{1}_" + m_UniqueTestName + ".json"; if (BuildScriptMode == TestBuildScriptMode.PackedPlaymode) { IDataBuilder packedModeBuilder = GetBuilderOfType(settings, typeof(BuildScriptPackedMode)); packedModeBuilder.BuildData <AddressableAssetBuildResult>(buildContext); } IDataBuilder b = GetBuilderOfType(settings, GetBuildScriptTypeFromMode(BuildScriptMode)); b.BuildData <AddressableAssetBuildResult>(buildContext); }
protected virtual void RunBuilder(AddressableAssetSettings settings) { var buildContext = new AddressablesDataBuilderInput(settings); buildContext.RuntimeSettingsFilename = "settings" + m_UniqueTestName + ".json"; buildContext.RuntimeCatalogFilename = "catalog" + m_UniqueTestName + ".json"; buildContext.PathFormat = "{0}" + Addressables.LibraryPath + "{1}_" + m_UniqueTestName + ".json"; if (BuildScriptMode == TestBuildScriptMode.PackedPlaymode) { IDataBuilder packedModeBuilder = GetBuilderOfType(settings, typeof(BuildScriptPackedMode)); packedModeBuilder.BuildData <AddressableAssetBuildResult>(buildContext); } IDataBuilder b = GetBuilderOfType(settings, GetBuildScriptTypeFromMode(BuildScriptMode)); b.BuildData <AddressableAssetBuildResult>(buildContext); PlayerPrefs.SetString(Addressables.kAddressablesRuntimeDataPath + m_UniqueTestName, PlayerPrefs.GetString(Addressables.kAddressablesRuntimeDataPath, "")); }
public static object BuildDataColumn(IQueryProvider queryProvider, IDbTransaction transaction, string serverId, string database, string schema, TableMetadata table, ColumnDefinition col) { IDataBuilder builder = null; var mustGenerate = false; if (!string.IsNullOrWhiteSpace(col.BuilderName)) { mustGenerate = true; if (!CachedBuilders.ContainsKey(col.BuilderName)) { var t = Type.GetType(col.BuilderName); builder = Activator.CreateInstance(t) as IDataBuilder; CachedBuilders.Add(col.BuilderName, builder); } else { builder = CachedBuilders[col.BuilderName]; } } else if (((col.IsPrimary && !col.IsAutoIncrement) || col.IsUniqueKey) && !col.IsForeignKey) { mustGenerate = true; switch (col.DbType) { case DbType.Date: case DbType.DateTime: case DbType.DateTime2: return(DateTime.Now); case DbType.Byte: case DbType.Decimal: case DbType.Double: case DbType.SByte: case DbType.Single: case DbType.Int16: case DbType.Int32: case DbType.Int64: case DbType.UInt16: case DbType.UInt32: case DbType.UInt64: builder = CachedBuilders["AutoIncrementDataBuilder"]; break; case DbType.AnsiString: case DbType.AnsiStringFixedLength: case DbType.Guid: case DbType.String: case DbType.StringFixedLength: builder = CachedBuilders["StringDataBuilder"]; break; default: throw new NotSupportedException("The generation of the key failed. Please specify a databuilder " + $"in the configuration for {database}.{table}.{col.Name}"); } } //Generate data if (mustGenerate) { if (builder == null) { throw new NullReferenceException($"Builder '{col.BuilderName}' for column '{col.Name}' is not found. Watch configuration file."); } return(builder.BuildData(transaction, queryProvider.Engine, serverId, database, schema, table, col)); } return(null); }