Release 0.3.4: Jellyfin 12 stable support and audit fixes
Harden proxy permissions and cache behavior, streamline metadata fetching, remove obsolete rules, and validate the stable SDK with expanded regression coverage. Document backup format changes.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
using System.Diagnostics;
|
||||
using Jellyfin.Plugin.Multilang.Data;
|
||||
using Jellyfin.Plugin.Multilang.Services.Refresh;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
namespace Jellyfin.Plugin.Multilang.Tests;
|
||||
|
||||
public sealed class TranslationStoreBatchTests(ITestOutputHelper output)
|
||||
{
|
||||
[Fact]
|
||||
public void BatchFactsLookupMatchesIndividualReads()
|
||||
{
|
||||
var root = TestPaths.CreateRoot();
|
||||
try
|
||||
{
|
||||
var store = new TranslationStore(new TestApplicationPaths(root));
|
||||
var ids = Enumerable.Range(0, 100).Select(index => index.ToString()).ToArray();
|
||||
foreach (var id in ids)
|
||||
store.SaveMetadata(new(id, id, "movie", RefreshWorkClass.Movies, 0, 0, null, "Movie"), "fi",
|
||||
new("Title", "Overview", "Tagline", "Title", "fi", [], [], [], []), new("scope", 1, true), true);
|
||||
var timer = Stopwatch.StartNew();
|
||||
var individual = ids.Select(id => store.GetFacts(id)!).ToArray();
|
||||
var separateMs = timer.Elapsed.TotalMilliseconds;
|
||||
timer.Restart();
|
||||
var batch = store.GetFactsForItems(ids.Concat(ids));
|
||||
var batchMs = timer.Elapsed.TotalMilliseconds;
|
||||
Assert.Equal(individual, ids.Select(id => batch[id]));
|
||||
Assert.Equal(ids.Length, batch.Count);
|
||||
output.WriteLine($"100 individual fact reads: {separateMs:F2} ms; one batched read: {batchMs:F2} ms. Timing is diagnostic, not a pass condition.");
|
||||
}
|
||||
finally { TestPaths.DeleteRoot(root); }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user