-
Notifications
You must be signed in to change notification settings - Fork 76
/
Copy pathCoapLwm2mBootstrapTests.cs
151 lines (130 loc) · 4.07 KB
/
CoapLwm2mBootstrapTests.cs
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Waher.Networking.Sniffers;
using Waher.Networking.LWM2M;
namespace Waher.Networking.CoAP.Test
{
[TestClass]
public class CoapLwm2mBootstrapTests
{
private CoapEndpoint coapClient;
private Lwm2mClient lwm2mClient;
[TestInitialize]
public async Task TestInitialize()
{
this.coapClient = new CoapEndpoint(new int[] { 5783 }, new int[] { 5784 }, null, null,
false, false, new ConsoleOutSniffer(BinaryPresentationMethod.Hexadecimal, LineEnding.NewLine));
this.lwm2mClient = await Lwm2mClient.Create("Lwm2mTestClient", this.coapClient,
new Lwm2mSecurityObject(),
new Lwm2mServerObject(),
new Lwm2mAccessControlObject(),
new Lwm2mDeviceObject("Waher Data AB", "Unit Test", Environment.MachineName,
Environment.OSVersion.VersionString, "PC", Environment.OSVersion.Platform.ToString(),
Environment.Version.ToString()));
await this.lwm2mClient.LoadBootstrapInfo();
}
[TestCleanup]
public async Task TestCleanup()
{
if (this.lwm2mClient is not null)
{
await this.lwm2mClient.DisposeAsync();
this.lwm2mClient = null;
}
if (this.coapClient is not null)
{
CoapResource[] Resources = this.coapClient.GetRegisteredResources();
await this.coapClient.DisposeAsync();
this.coapClient = null;
Assert.AreEqual(1, Resources.Length, "There are resources still registered on the CoAP client.");
}
}
[TestMethod]
public async Task LWM2M_Bootstrap_Test_01_BootstrapRequest_Explicit()
{
ManualResetEvent Done = new(false);
ManualResetEvent Error = new(false);
ManualResetEvent Done2 = new(false);
ManualResetEvent Error2 = new(false);
ManualResetEvent Done3 = new(false);
ManualResetEvent Error3 = new(false);
this.lwm2mClient.OnBootstrapCompleted += (Sender, e) =>
{
Done2.Set();
return Task.CompletedTask;
};
this.lwm2mClient.OnBootstrapFailed += (Sender, e) =>
{
Error2.Set();
return Task.CompletedTask;
};
this.lwm2mClient.OnRegistrationSuccessful += (Sender, e) =>
{
Done3.Set();
return Task.CompletedTask;
};
this.lwm2mClient.OnRegistrationFailed += (Sender, e) =>
{
Error3.Set();
return Task.CompletedTask;
};
await this.lwm2mClient.RequestBootstrap(
new Lwm2mServerReference("leshan.eclipse.org", 5783),
(Sender, e) =>
{
if (e.Ok)
Done.Set();
else
Error.Set();
return Task.CompletedTask;
}, null);
Assert.AreEqual(0, WaitHandle.WaitAny(new WaitHandle[] { Done, Error }, 10000));
Assert.AreEqual(0, WaitHandle.WaitAny(new WaitHandle[] { Done2, Error2 }, 10000));
Assert.AreEqual(0, WaitHandle.WaitAny(new WaitHandle[] { Done3, Error3 }, 10000));
}
[TestMethod]
[Ignore("Bootstrap URI not configured correctly by the Leshan demo server.")]
public async Task LWM2M_Bootstrap_Test_02_BootstrapRequest_LastServer()
{
ManualResetEvent Done = new(false);
ManualResetEvent Error = new(false);
ManualResetEvent Done2 = new(false);
ManualResetEvent Error2 = new(false);
ManualResetEvent Done3 = new(false);
ManualResetEvent Error3 = new(false);
this.lwm2mClient.OnBootstrapCompleted += (Sender, e) =>
{
Done2.Set();
return Task.CompletedTask;
};
this.lwm2mClient.OnBootstrapFailed += (Sender, e) =>
{
Error2.Set();
return Task.CompletedTask;
};
this.lwm2mClient.OnRegistrationSuccessful += (Sender, e) =>
{
Done3.Set();
return Task.CompletedTask;
};
this.lwm2mClient.OnRegistrationFailed += (Sender, e) =>
{
Error3.Set();
return Task.CompletedTask;
};
Assert.IsTrue(await this.lwm2mClient.RequestBootstrap((Sender, e) =>
{
if (e.Ok)
Done.Set();
else
Error.Set();
return Task.CompletedTask;
}, null));
Assert.AreEqual(0, WaitHandle.WaitAny(new WaitHandle[] { Done, Error }, 10000));
Assert.AreEqual(0, WaitHandle.WaitAny(new WaitHandle[] { Done2, Error2 }, 10000));
Assert.AreEqual(0, WaitHandle.WaitAny(new WaitHandle[] { Done3, Error3 }, 10000));
}
}
}