public async Task StartStopMultiple() { var(client, server) = await PayloadV2TestHelper.CreateServerAndClientDevices(IlsRtt.Records, IlsRtt.Fields, 1000); var settings = new SessionSettings($"name1"); var recordInfo = await client.Rtt.StartRecord(settings); Assert.True(recordInfo.IsEnabled); recordInfo.Session.Settings.WithDeepEqual(settings); Assert.True(await client.Rtt.StopRecord()); var session2 = await client.Rtt.StartRecord(new SessionSettings($"name2")); Assert.True(await client.Rtt.StopRecord()); //Pv2RttSessionStoreInfo info = client.Rtt.GetStoreInfo(); }
public async Task ReadData(int delayMs, uint recTimeMs) { var(client, server) = await PayloadV2TestHelper.CreateServerAndClientDevices(IlsRtt.Records, IlsRtt.Fields, recTimeMs, _output.WriteLine); server.Rtt[IlsRtt.Power11] = -70.0; server.Rtt[IlsRtt.Power12] = -60.0; server.Rtt[IlsRtt.Power13] = -50.0; server.Rtt[IlsRtt.Power21] = -40.0; server.Rtt[IlsRtt.Power22] = -20.0; server.Rtt[IlsRtt.Power23] = -10.0; client.Rtt.OnUpdate.Subscribe(_ => { if ((_.Metadata.Flags & Pv2StreamFlags.RecordEnabled) != 0) { } }); var result = await client.Rtt.StartRecord(new SessionSettings("Rec1", "Tag1")); _output.WriteLine($"Start record and wait {delayMs} sec"); await Task.Delay(delayMs); _output.WriteLine("Stop record"); await client.Rtt.StopRecord(); var sw = new Stopwatch(); sw.Start(); var storeInfo = await client.Rtt.GetStoreInfo(); Assert.Equal(1U, storeInfo.SessionCount); var sessionInfo = await client.Rtt.GetSessionInfo(0U); Assert.Equal((int)sessionInfo.FieldsCount, IlsRtt.Fields.Count()); result.Session.WithDeepEqual(sessionInfo.Metadata).Assert(); var fieldsIds = new List <(uint id, uint count)>(); for (var i = 0; i < sessionInfo.FieldsCount; i++) { var recordInfo = await client.Rtt.GetSessionFieldInfo(sessionInfo.Metadata.SessionId, (uint)i); _output.WriteLine($"{recordInfo.Metadata.Settings.Name, -20} [{recordInfo.Metadata.Settings.Id}]: {recordInfo.Count} ({recordInfo.SizeInBytes:N} bytes)"); fieldsIds.Add((recordInfo.Metadata.Settings.Id, recordInfo.Count)); Assert.Contains(IlsRtt.Fields, _ => _.FullId == recordInfo.Metadata.Settings.Id); } sw.Stop(); _output.WriteLine($"Readed all store description by {sw.Elapsed.TotalSeconds:F1} sec"); sw.Restart(); foreach (var item in fieldsIds) { var values = new List <object>(); var sw2 = new Stopwatch(); sw2.Start(); var readCount = 0; while (values.Count < item.count) { var data = await client.Rtt.GetSessionFieldData(result.Session.SessionId, item.id, (uint)values.Count, byte.MaxValue); readCount++; foreach (var valueTuple in data.data) { values.Add(valueTuple.value); if (data.desc.FullId == IlsRtt.Power11.FullId) { Assert.Equal(server.Rtt[IlsRtt.Power11], valueTuple.value); } if (data.desc.FullId == IlsRtt.Power12.FullId) { Assert.Equal(server.Rtt[IlsRtt.Power12], valueTuple.value); } if (data.desc.FullId == IlsRtt.Power13.FullId) { Assert.Equal(server.Rtt[IlsRtt.Power13], valueTuple.value); } if (data.desc.FullId == IlsRtt.Power21.FullId) { Assert.Equal(server.Rtt[IlsRtt.Power21], valueTuple.value); } if (data.desc.FullId == IlsRtt.Power22.FullId) { Assert.Equal(server.Rtt[IlsRtt.Power22], valueTuple.value); } if (data.desc.FullId == IlsRtt.Power23.FullId) { Assert.Equal(server.Rtt[IlsRtt.Power23], valueTuple.value); } } } sw2.Stop(); _output.WriteLine($"[{item.id}] readed {values.Count} records by {sw2.Elapsed.TotalSeconds:F2} sec ({readCount} read)"); } sw.Stop(); _output.WriteLine($"Readed all store data by {sw.Elapsed.TotalSeconds:F1} sec"); }