Skip to content

Commit

Permalink
Merge pull request #24 from viordash/tests-stability
Browse files Browse the repository at this point in the history
Tests stability
  • Loading branch information
viordash authored Sep 30, 2023
2 parents c711c68 + 482115b commit 4cb7924
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 24 deletions.
26 changes: 16 additions & 10 deletions ShareClipbrd/ShareClipbrd.Core.Tests/Services/ClientServerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ public void Setup() {
addressDiscoveryServiceMock = new();
timeServiceMock.SetupGet(x => x.DataClientPingPeriod).Returns(TimeSpan.FromMilliseconds(10000));

systemConfigurationMock.SetupGet(x => x.HostAddress).Returns("127.0.0.1:55542");
systemConfigurationMock.SetupGet(x => x.PartnerAddress).Returns("127.0.0.1:55542");
systemConfigurationMock.SetupGet(x => x.HostAddress).Returns("127.0.0.1:0");

server = new DataServer(systemConfigurationMock.Object, dialogServiceMock.Object, dispatchServiceMock.Object,
progressServiceMock.Object, connectStatusServiceMock.Object, addressDiscoveryServiceMock.Object);
Expand All @@ -52,7 +51,8 @@ public async Task Send_CommonData_Test() {
.Setup(x => x.ReceiveData(It.IsAny<ClipboardData>()))
.Callback<ClipboardData>(x => receivedClipboard.Add(x));

server.Start();
var port = await server.Start();
systemConfigurationMock.SetupGet(x => x.PartnerAddress).Returns($"127.0.0.1:{port}");

var clipboardData = new ClipboardData();
clipboardData.Add("UnicodeText", new MemoryStream(System.Text.Encoding.Unicode.GetBytes("UnicodeText юникод Œ")));
Expand All @@ -62,6 +62,7 @@ public async Task Send_CommonData_Test() {
clipboardData.Add("Text", new MemoryStream(System.Text.Encoding.Unicode.GetBytes("Text 0123456789")));

await client.SendData(clipboardData);
await Task.Delay(500);
await server.Stop();
client.Stop();

Expand All @@ -82,7 +83,8 @@ public async Task Send_Common_Big_Data_Test() {
.Setup(x => x.ReceiveData(It.IsAny<ClipboardData>()))
.Callback<ClipboardData>(x => receivedClipboard = x);

server.Start();
var port = await server.Start();
systemConfigurationMock.SetupGet(x => x.PartnerAddress).Returns($"127.0.0.1:{port}");

var clipboardData = new ClipboardData();

Expand Down Expand Up @@ -134,8 +136,8 @@ public async Task Send_Files_Test() {
files.Add(filename);
}

server.Start();

var port = await server.Start();
systemConfigurationMock.SetupGet(x => x.PartnerAddress).Returns($"127.0.0.1:{port}");
try {
await client.SendFileDropList(files);
await client.SendFileDropList(files);
Expand Down Expand Up @@ -193,7 +195,8 @@ public async Task Send_Big_File_Test() {

files.Add(filename);

server.Start();
var port = await server.Start();
systemConfigurationMock.SetupGet(x => x.PartnerAddress).Returns($"127.0.0.1:{port}");

try {
await client.SendFileDropList(files);
Expand Down Expand Up @@ -266,7 +269,8 @@ public async Task Send_Files_And_Folders_Test() {
files.Add(directory0_child1);
files.Add(directory0_child1_empty0);

server.Start();
var port = await server.Start();
systemConfigurationMock.SetupGet(x => x.PartnerAddress).Returns($"127.0.0.1:{port}");
try {
await client.SendFileDropList(files);
} finally {
Expand Down Expand Up @@ -350,7 +354,8 @@ public async Task Send_identical_Files__Test() {
files.Add(filename0);
files.Add(filename0);

server.Start();
var port = await server.Start();
systemConfigurationMock.SetupGet(x => x.PartnerAddress).Returns($"127.0.0.1:{port}");
try {
await client.SendFileDropList(files);
} finally {
Expand Down Expand Up @@ -410,7 +415,8 @@ public async Task DataClient_Ping_Periodic_Test() {
Debug.WriteLine("clientConnected = false");
});

server.Start();
var port = await server.Start();
systemConfigurationMock.SetupGet(x => x.PartnerAddress).Returns($"127.0.0.1:{port}");
client.Start();

await AwaitClientConnectStatus(true);
Expand Down
20 changes: 10 additions & 10 deletions ShareClipbrd/ShareClipbrd.Core/Services/DataClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,11 @@ async ValueTask<NetworkStream> Handshake() {

public async Task SendFileDropList(StringCollection fileDropList) {
cts.Cancel();
var inProcess = !pingTimer.Enabled;
if(inProcess) {
Debug.WriteLine("--- inProcess 0");
await Task.Delay(1000);
}
// var inProcess = !pingTimer.Enabled;
// if(inProcess) {
// Debug.WriteLine("--- inProcess 0");
// await Task.Delay(1000);
// }
cts = new();
var cancellationToken = cts.Token;
try {
Expand Down Expand Up @@ -116,11 +116,11 @@ static async Task SendSize(Int64 size, NetworkStream stream, CancellationToken c

public async Task SendData(ClipboardData clipboardData) {
cts.Cancel();
var inProcess = !pingTimer.Enabled;
if(inProcess) {
Debug.WriteLine("--- inProcess 0");
await Task.Delay(1000);
}
// var inProcess = !pingTimer.Enabled;
// if(inProcess) {
// Debug.WriteLine("--- inProcess 0");
// await Task.Delay(1000);
// }
cts = new();
var cancellationToken = cts.Token;
try {
Expand Down
15 changes: 12 additions & 3 deletions ShareClipbrd/ShareClipbrd.Core/Services/DataServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

namespace ShareClipbrd.Core.Services {
public interface IDataServer {
void Start();
Task<int> Start();
Task Stop();
}

Expand All @@ -23,6 +23,7 @@ public class DataServer : IDataServer {
readonly IConnectStatusService connectStatusService;
readonly IAddressDiscoveryService addressDiscoveryService;
CancellationTokenSource? cts;
TaskCompletionSource<int> tcsStarted;
TaskCompletionSource<bool> tcsStopped;

public DataServer(
Expand All @@ -46,6 +47,8 @@ IAddressDiscoveryService addressDiscoveryService
this.connectStatusService = connectStatusService;
this.addressDiscoveryService = addressDiscoveryService;

tcsStarted = new TaskCompletionSource<int>();
tcsStarted.TrySetResult(-1);
tcsStopped = new TaskCompletionSource<bool>();
tcsStopped.TrySetResult(true);
}
Expand Down Expand Up @@ -154,15 +157,16 @@ async ValueTask HandleClient(TcpClient tcpClient, CancellationToken cancellation
}
}

public void Start() {
public Task<int> Start() {
cts?.Cancel();
cts = new CancellationTokenSource();
tcsStarted = new TaskCompletionSource<int>();
tcsStopped = new TaskCompletionSource<bool>();
var cancellationToken = cts.Token;
Task.Run(async () => {
while(!cancellationToken.IsCancellationRequested) {
if(string.IsNullOrEmpty(systemConfiguration.PartnerAddress)) {
if(string.IsNullOrEmpty(systemConfiguration.HostAddress)) {
connectStatusService.Offline();
break;
}
Expand All @@ -184,6 +188,8 @@ public void Start() {
var tcpServer = new TcpListener(ipEndPoint.Address, ipEndPoint.Port);
try {
tcpServer.Start();
tcsStarted.TrySetResult(((IPEndPoint)tcpServer.LocalEndpoint).Port);
Debug.WriteLine($"start tcpServer: {((IPEndPoint)tcpServer.LocalEndpoint)}");
if(useAddressDiscoveryService) {
Expand Down Expand Up @@ -217,8 +223,11 @@ public void Start() {
}
connectStatusService.Offline();
}
tcsStarted.TrySetResult(-1);
tcsStopped.TrySetResult(true);
}, cancellationToken);

return tcsStarted.Task;
}

public Task Stop() {
Expand Down
2 changes: 1 addition & 1 deletion ShareClipbrd/ShareClipbrdApp/MainWindow.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ async void SettingsUpdated() {
edHostAddress.Text = systemConfiguration!.HostAddress;
edPartnerAddress.Text = systemConfiguration!.PartnerAddress;
await (dataServer?.Stop() ?? Task.CompletedTask);
dataServer?.Start();
await (dataServer?.Start() ?? Task.CompletedTask);
dataClient?.Stop();
dataClient?.Start();
}
Expand Down

0 comments on commit 4cb7924

Please sign in to comment.