Built tests for TransmitChannelConfigurationObject and UpstreamChannelDescriptor

This commit is contained in:
feyris-tan 2025-05-25 21:11:44 +02:00
parent 92364dbb03
commit ed3f273238
9 changed files with 83 additions and 6 deletions

View File

@ -25,7 +25,7 @@ namespace skyscraper8.Tests
public class DocsisTests public class DocsisTests
{ {
[Fact] [Fact]
public void AAA_ModemCapabilitiesEncodingTest() public void ModemCapabilitiesEncoding()
{ {
byte[] buffer = Resources.ModemCapabilitiesEncodingTest; byte[] buffer = Resources.ModemCapabilitiesEncodingTest;
ModemCapabilitiesEncoding modemCapabilitiesEncoding = new ModemCapabilitiesEncoding(buffer); ModemCapabilitiesEncoding modemCapabilitiesEncoding = new ModemCapabilitiesEncoding(buffer);
@ -33,7 +33,7 @@ namespace skyscraper8.Tests
} }
[Fact] [Fact]
public void AAB_MultipartRegistrationResponseTest() public void MultipartRegistrationResponse()
{ {
Random rng = new Random(); Random rng = new Random();
@ -53,7 +53,7 @@ namespace skyscraper8.Tests
} }
[Fact] [Fact]
public void AAC_MacManagement_4_45() public void MacManagement_4_45()
{ {
DocsisEventHandlerImpl docsisEventHandler = new DocsisEventHandlerImpl(); DocsisEventHandlerImpl docsisEventHandler = new DocsisEventHandlerImpl();
DocsisEnvironment environment = new DocsisEnvironment(docsisEventHandler); DocsisEnvironment environment = new DocsisEnvironment(docsisEventHandler);
@ -71,5 +71,32 @@ namespace skyscraper8.Tests
environment.PushMacManagementMessage(testPayload, 4, 45, source, target, testPayload); environment.PushMacManagementMessage(testPayload, 4, 45, source, target, testPayload);
} }
[Fact]
public void InvalidUpstreamChannelDescriptorTest()
{
byte[] testPayload = Resources.UpstreamChannelDescriptorTest;
Random rng = new Random();
byte[] sourceBuffer = new byte[6];
rng.NextBytes(sourceBuffer);
PhysicalAddress source = new PhysicalAddress(sourceBuffer);
byte[] targetBuffer = new byte[6];
rng.NextBytes(targetBuffer);
PhysicalAddress target = new PhysicalAddress(targetBuffer);
UpstreamChannelDescriptor ucd = new UpstreamChannelDescriptor(source, target, testPayload);
Assert.False(ucd.Valid);
}
[Fact]
public void TransmitChannelConfigurationObjectTest()
{
byte[] testPayload = Resources.TransmitChannelConfigurationObject;
CommonTlvEncodingObject.TransmitChannelConfigurationObject child = new CommonTlvEncodingObject.TransmitChannelConfigurationObject(testPayload);
Assert.True(child.Valid);
}
} }
} }

View File

@ -20,7 +20,11 @@ namespace skyscraper8.Tests
public void TestLongBoiSingleStreams() public void TestLongBoiSingleStreams()
{ {
DirectoryInfo di = new DirectoryInfo("D:\\DocsisDemo"); DirectoryInfo di = new DirectoryInfo("D:\\DocsisDemo");
Skip.If(!di.Exists, "Files not available."); if (!di.Exists)
{
Debug.WriteLine("Files not available!");
return;
}
FilesystemScraperStorageFactory storageFactory = new FilesystemScraperStorageFactory(); FilesystemScraperStorageFactory storageFactory = new FilesystemScraperStorageFactory();
storageFactory.Directory = "docsis_longboi"; storageFactory.Directory = "docsis_longboi";
@ -34,7 +38,11 @@ namespace skyscraper8.Tests
public void TestM3u8Stream() public void TestM3u8Stream()
{ {
FileInfo docsisM3u8 = new FileInfo("D:\\DocsisDemo\\docsis.m3u8"); FileInfo docsisM3u8 = new FileInfo("D:\\DocsisDemo\\docsis.m3u8");
Skip.If(!docsisM3u8.Exists, "Index file not available."); if (!docsisM3u8.Exists)
{
Debug.WriteLine("File not available!");
return;
}
FileInfo alreadyTested = new FileInfo("docsis_m3u8_test.complete"); FileInfo alreadyTested = new FileInfo("docsis_m3u8_test.complete");
if (alreadyTested.Exists) if (alreadyTested.Exists)

View File

@ -129,5 +129,25 @@ namespace skyscraper8.Tests.Properties {
return ((byte[])(obj)); return ((byte[])(obj));
} }
} }
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
/// </summary>
internal static byte[] TransmitChannelConfigurationObject {
get {
object obj = ResourceManager.GetObject("TransmitChannelConfigurationObject", resourceCulture);
return ((byte[])(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
/// </summary>
internal static byte[] UpstreamChannelDescriptorTest {
get {
object obj = ResourceManager.GetObject("UpstreamChannelDescriptorTest", resourceCulture);
return ((byte[])(obj));
}
}
} }
} }

View File

@ -139,4 +139,10 @@
<data name="test-3packets-04-05-06" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="test-3packets-04-05-06" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\test-3packets-04-05-06.ts;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>..\Resources\test-3packets-04-05-06.ts;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="TransmitChannelConfigurationObject" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TransmitChannelConfigurationObject.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="UpstreamChannelDescriptorTest" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UpstreamChannelDescriptorTest.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root> </root>

View File

@ -1,4 +1,5 @@
using skyscraper5.Docsis.MacManagement; using skyscraper5.Docsis.MacManagement;
using skyscraper5.Skyscraper;
using skyscraper5.Skyscraper.IO; using skyscraper5.Skyscraper.IO;
using skyscraper8.Docsis.AnnexC; using skyscraper8.Docsis.AnnexC;
using skyscraper8.Docsis.DQoS; using skyscraper8.Docsis.DQoS;
@ -85,7 +86,7 @@ namespace skyscraper5.Docsis.AnnexC
public List<GeneralPacketClassifierEncoding> UpstreamDropPacketClassificationEncoding { get; set; } public List<GeneralPacketClassifierEncoding> UpstreamDropPacketClassificationEncoding { get; set; }
public List<TransmitChannelConfigurationObject> TransmitChannelConfiguration { get; set; } public List<TransmitChannelConfigurationObject> TransmitChannelConfiguration { get; set; }
public class TransmitChannelConfigurationObject public class TransmitChannelConfigurationObject : Validatable
{ {
public TransmitChannelConfigurationObject(byte[] buffer) public TransmitChannelConfigurationObject(byte[] buffer)
{ {
@ -116,6 +117,12 @@ namespace skyscraper5.Docsis.AnnexC
case 7: case 7:
InitializationTechnique = (InitalizationTechniqueEnum?)v[0]; InitializationTechnique = (InitalizationTechniqueEnum?)v[0];
break; break;
case 9:
DynamicRangeWindow = v[0];
break;
case 10:
P16Hi = v[0];
break;
case 11: case 11:
ListOfIucs = v; ListOfIucs = v;
break; break;
@ -124,6 +131,7 @@ namespace skyscraper5.Docsis.AnnexC
throw new NotImplementedException(string.Format("TCC TLV Type {0}", type)); throw new NotImplementedException(string.Format("TCC TLV Type {0}", type));
} }
} }
Valid = true;
} }
public byte[] ListOfIucs { get; set; } public byte[] ListOfIucs { get; set; }
@ -146,6 +154,7 @@ namespace skyscraper5.Docsis.AnnexC
public byte? TccReferenceId { get; set; } public byte? TccReferenceId { get; set; }
public InitalizationTechniqueEnum? InitializationTechnique { get; } public InitalizationTechniqueEnum? InitializationTechnique { get; }
public UpstreamChannelDescriptor UpstreamChannelDescriptor { get; } public UpstreamChannelDescriptor UpstreamChannelDescriptor { get; }
public byte DynamicRangeWindow { get; }
} }
public byte KeySequenceNumber { get; set; } public byte KeySequenceNumber { get; set; }

View File

@ -115,6 +115,11 @@ namespace skyscraper5.Docsis.MacManagement
RandomizationSeed = BitConverter.ToUInt32(v2, 0); RandomizationSeed = BitConverter.ToUInt32(v2, 0);
break; break;
default: default:
if (type > 34)
{
Valid = false;
return;
}
throw new NotImplementedException(String.Format("{0} TLV type {1}", nameof(UpstreamChannelDescriptor), type)); throw new NotImplementedException(String.Format("{0} TLV type {1}", nameof(UpstreamChannelDescriptor), type));
} }

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Text; using System.Text;
@ -68,6 +69,7 @@ namespace skyscraper8.Skyscraper.IO
private Stream GetSegmentStream(string segmentName) private Stream GetSegmentStream(string segmentName)
{ {
Console.WriteLine("open segment {0}", segmentName); Console.WriteLine("open segment {0}", segmentName);
Debug.WriteLine(String.Format("open segment {0}", segmentName));
if (source.StartsWith("http://") || source.StartsWith("https://")) if (source.StartsWith("http://") || source.StartsWith("https://"))
{ {
return webClient.GetStreamAsync(segmentName).Result; return webClient.GetStreamAsync(segmentName).Result;