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));
    }
예제 #3
0
    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, ""));
    }
예제 #5
0
        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);
        }