-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathMediaConverterIpcTests.cs
More file actions
116 lines (102 loc) · 4.69 KB
/
MediaConverterIpcTests.cs
File metadata and controls
116 lines (102 loc) · 4.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using System.Text.Json;
using System.Text.Json.Serialization;
using dotnetCampus.Ipc.Context;
using dotnetCampus.Ipc.IpcRouteds.DirectRouteds;
using DotNetCampus.MediaConverters.CommandLineHandlers;
using DotNetCampus.MediaConverters.Contexts;
using DotNetCampus.MediaConverters.Contexts.IpcContexts;
namespace DotNetCampus.MediaConverters.Tests.Tool;
[TestClass]
public class MediaConverterIpcTests
{
[TestMethod]
public async Task TestBatchImage()
{
var testFolder = Path.Join(TestHelper.WorkingDirectory.FullName, Path.GetRandomFileName());
Directory.CreateDirectory(testFolder);
var ipcHandler = new IpcHandler()
{
IpcName = Guid.NewGuid().ToString(),
WorkingFolder = testFolder,
ShouldLogToConsole = true,
ShouldLogToFile = true,
};
var task = Task.Run(async () =>
{
var provider = new JsonIpcDirectRoutedProvider(ipcConfiguration: new IpcConfiguration()
.UseSystemTextJsonIpcObjectSerializer(MediaConverterJsonSerializerSourceGenerationContext.Default));
var clientProxy = await provider.GetAndConnectClientAsync(ipcHandler.IpcName);
var response = await clientProxy.GetResponseAsync<IpcConvertImageResponse>(IpcPaths.RequestConvertImage, new IpcConvertImageRequest()
{
TraceId = "TraceId-1",
InputFile = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName).FullName,
OutputFile = Path.Join(testFolder, "Output1.png"),
ConvertConfigurationFile = ToConfigurationFile(new ImageConvertContext()
{
ImageConvertTaskList =
[
new SetSoftEdgeEffectTask()
{
Radius = 20
}
]
},testFolder)
});
Assert.IsNotNull(response);
Assert.AreEqual(MediaConverterErrorCode.Success.Code, response.Code);
response = await clientProxy.GetResponseAsync<IpcConvertImageResponse>(IpcPaths.RequestConvertImage, new IpcConvertImageRequest()
{
TraceId = "TraceId-2",
InputFile = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName).FullName,
OutputFile = Path.Join(testFolder, "Output2.png"),
ConvertConfigurationFile = ToConfigurationFile(new ImageConvertContext()
{
ImageConvertTaskList =
[
new SetLuminanceEffectTask()
],
ShouldCopyNewFile = false,
}, testFolder)
});
Assert.IsNotNull(response);
Assert.AreEqual(MediaConverterErrorCode.Success.Code, response.Code);
response = await clientProxy.GetResponseAsync<IpcConvertImageResponse>(IpcPaths.RequestConvertImage, new IpcConvertImageRequest()
{
TraceId = "TraceId-3",
InputFile = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName).FullName,
OutputFile = Path.Join(testFolder, "Output3.png"),
ConvertConfigurationFile = ToConfigurationFile(new ImageConvertContext()
{
ImageConvertTaskList =
[
new SetContrastTask()
{
Percentage = 0.7f
}
]
}, testFolder)
});
Assert.IsNotNull(response);
Assert.AreEqual(MediaConverterErrorCode.Success.Code, response.Code);
var ipcExitResponse = await clientProxy.GetResponseAsync<IpcExitResponse>(IpcPaths.Exit, new IpcExitRequest()
{
Reason = "正常退出"
});
Assert.IsNotNull(ipcExitResponse);
Assert.AreEqual(MediaConverterErrorCode.Success.Code, response.Code);
});
await ipcHandler.RunAsync().WaitAsync(TimeSpan.FromMinutes(15));
await task.WaitAsync(TimeSpan.FromMinutes(15));
}
private static string ToConfigurationFile(ImageConvertContext imageConvertContext,string testFolder)
{
var jsonText = JsonSerializer.Serialize(imageConvertContext,
new JsonSerializerOptions(MediaConverterJsonSerializerSourceGenerationContext.Default.Options)
{
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
});
var configFile = Path.Join(testFolder, "Config.json");
File.WriteAllText(configFile, jsonText);
return configFile;
}
}