summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Fischer <joeljfischer@gmail.com>2017-07-28 14:03:13 -0400
committerJoel Fischer <joeljfischer@gmail.com>2017-07-28 14:03:13 -0400
commit2d2d9b2bff74d780251baaa133487be5cbf66fe2 (patch)
treef207b9c19d1f33d502fba469dbdd239051f7b53f
parent589ff022c360945122154adf8f93110118517fa8 (diff)
downloadsdl_ios-2d2d9b2bff74d780251baaa133487be5cbf66fe2.tar.gz
Add dynamic MTU tests
* Fix a number of tests
-rw-r--r--SmartDeviceLink/SDLGlobals.m7
-rw-r--r--SmartDeviceLink/SDLProtocol.m2
-rw-r--r--SmartDeviceLink/SDLProtocolMessage.h2
-rw-r--r--SmartDeviceLink/SDLProtocolMessage.m4
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLUploadFileOperationSpec.m12
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLProtocolHeaderSpec.m18
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolMessageSpec.m14
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m14
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/SDLProtocolMessageDisassemblerSpec.m6
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/SDLProtocolReceivedMessageRouterSpec.m2
-rw-r--r--SmartDeviceLinkTests/UtilitiesSpecs/SDLGlobalsSpec.m107
11 files changed, 123 insertions, 65 deletions
diff --git a/SmartDeviceLink/SDLGlobals.m b/SmartDeviceLink/SDLGlobals.m
index ae0912857..da2636a61 100644
--- a/SmartDeviceLink/SDLGlobals.m
+++ b/SmartDeviceLink/SDLGlobals.m
@@ -48,6 +48,7 @@ typedef NSNumber* MTUBox;
_protocolVersion = @"1.0.0";
_maxHeadUnitVersion = @"0.0.0";
+ _dynamicMTUDict = [NSMutableDictionary dictionary];
return self;
}
@@ -65,12 +66,6 @@ typedef NSNumber* MTUBox;
return [self.protocolVersion substringWithRange:NSMakeRange(0, 1)].integerValue;
}
-- (void)setProtocolVersion:(NSString *)protocolVersion {
- _protocolVersion = protocolVersion;
-
-
-}
-
- (void)setDynamicMTUSize:(NSUInteger)maxMTUSize forServiceType:(SDLServiceType)serviceType {
self.dynamicMTUDict[@(serviceType)] = @(maxMTUSize);
}
diff --git a/SmartDeviceLink/SDLProtocol.m b/SmartDeviceLink/SDLProtocol.m
index 67bb6047f..0238db5ad 100644
--- a/SmartDeviceLink/SDLProtocol.m
+++ b/SmartDeviceLink/SDLProtocol.m
@@ -86,7 +86,7 @@ typedef NSNumber SDLServiceTypeBox;
#pragma mark - Start Service
-- (void)startServiceWithtype:(SDLServiceType)serviceType {
+- (void)startServiceWithType:(SDLServiceType)serviceType {
[self startServiceWithType:serviceType payload:nil];
}
diff --git a/SmartDeviceLink/SDLProtocolMessage.h b/SmartDeviceLink/SDLProtocolMessage.h
index 3548091ef..b7daeb055 100644
--- a/SmartDeviceLink/SDLProtocolMessage.h
+++ b/SmartDeviceLink/SDLProtocolMessage.h
@@ -17,4 +17,6 @@
- (NSString *)description;
- (NSDictionary *)rpcDictionary; // Use for RPC type messages to obtain the data in a dictionary
++ (UInt8)determineVersion:(NSData *)data __deprecated_msg(("Use SDLProtocolHeader determineVersion: instead"));
+
@end
diff --git a/SmartDeviceLink/SDLProtocolMessage.m b/SmartDeviceLink/SDLProtocolMessage.m
index 12eeb60a9..8b6d079f6 100644
--- a/SmartDeviceLink/SDLProtocolMessage.m
+++ b/SmartDeviceLink/SDLProtocolMessage.m
@@ -50,6 +50,10 @@
return dataOut;
}
++ (UInt8)determineVersion:(NSData *)data {
+ return [SDLProtocolHeader determineVersion:data];
+}
+
- (NSString *)description {
// Print the header data.
NSMutableString *description = [[NSMutableString alloc] init];
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLUploadFileOperationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLUploadFileOperationSpec.m
index 15371a53b..8d0506ad7 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLUploadFileOperationSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLUploadFileOperationSpec.m
@@ -28,7 +28,7 @@ describe(@"Upload File Operation", ^{
beforeEach(^{
// Set the head unit size small so we have a low MTU size
- [SDLGlobals globals].maxHeadUnitVersion = 2;
+ [SDLGlobals globals].maxHeadUnitVersion = @"2.0.0";
});
context(@"running a small file operation", ^{
@@ -143,25 +143,25 @@ describe(@"Upload File Operation", ^{
it(@"should send correct putfiles", ^{
NSArray<SDLPutFile *> *putFiles = testConnectionManager.receivedRequests;
- NSUInteger numberOfPutFiles = (((testFileData.length - 1) / [SDLGlobals globals].maxMTUSize) + 1);
+ NSUInteger numberOfPutFiles = (((testFileData.length - 1) / [[SDLGlobals globals] mtuSizeForServiceType:SDLServiceType_BulkData]) + 1);
expect(@(putFiles.count)).to(equal(@(numberOfPutFiles)));
// Test all PutFiles pieces for offset & length.
for (NSUInteger index = 0; index < numberOfPutFiles; index++) {
SDLPutFile *putFile = putFiles[index];
- expect(putFile.offset).to(equal(@(index * [SDLGlobals globals].maxMTUSize)));
+ expect(putFile.offset).to(equal(@(index * [[SDLGlobals globals] mtuSizeForServiceType:SDLServiceType_BulkData])));
expect(putFile.persistentFile).to(equal(@NO));
expect(putFile.syncFileName).to(equal(testFileName));
- expect(putFile.bulkData).to(equal([testFileData subdataWithRange:NSMakeRange((index * [SDLGlobals globals].maxMTUSize), MIN(putFile.length.unsignedIntegerValue, [SDLGlobals globals].maxMTUSize))]));
+ expect(putFile.bulkData).to(equal([testFileData subdataWithRange:NSMakeRange((index * [[SDLGlobals globals] mtuSizeForServiceType:SDLServiceType_BulkData]), MIN(putFile.length.unsignedIntegerValue, [[SDLGlobals globals] mtuSizeForServiceType:SDLServiceType_BulkData]))]));
// First Putfile has some differences due to informing core of the total incoming packet size.
if (index == 0) {
expect(putFile.length).to(equal(@(testFileData.length)));
} else if (index == numberOfPutFiles - 1) {
- expect(putFile.length).to(equal(@(testFileData.length - (index * [SDLGlobals globals].maxMTUSize))));
+ expect(putFile.length).to(equal(@(testFileData.length - (index * [[SDLGlobals globals] mtuSizeForServiceType:SDLServiceType_BulkData]))));
} else {
- expect(putFile.length).to(equal(@([SDLGlobals globals].maxMTUSize)));
+ expect(putFile.length).to(equal(@([[SDLGlobals globals] mtuSizeForServiceType:SDLServiceType_BulkData])));
}
}
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLProtocolHeaderSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLProtocolHeaderSpec.m
index 573003bc8..e00062a34 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLProtocolHeaderSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLProtocolHeaderSpec.m
@@ -21,9 +21,21 @@ describe(@"HeaderForVersion Tests", ^ {
expect([SDLProtocolHeader headerForVersion:2]).to(beAKindOf(SDLV2ProtocolHeader.class));
});
- it(@"Should return latest version for unknown version", ^ {
- expect([SDLProtocolHeader headerForVersion:5]).to(raiseException().named(NSInvalidArgumentException));
+ it(@"Should return a v2 header for unknown version", ^ {
+ expect([SDLProtocolHeader headerForVersion:255].version).to(equal(255));
});
});
-QuickSpecEnd \ No newline at end of file
+describe(@"DetermineVersion Tests", ^ {
+ it(@"Should return the correct version", ^ {
+ const char bytesV1[8] = {0x10 | SDLFrameType_First, SDLServiceType_BulkData, SDLFrameData_StartSessionACK, 0x5E, 0x00, 0x00, 0x00, 0x00};
+ NSData* messageV1 = [NSData dataWithBytes:bytesV1 length:8];
+ expect(@([SDLProtocolHeader determineVersion:messageV1])).to(equal(@1));
+
+ const char bytesV2[12] = {0x20 | SDLFrameType_First, SDLServiceType_BulkData, SDLFrameData_StartSessionACK, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x44};
+ NSData* messageV2 = [NSData dataWithBytes:bytesV2 length:12];
+ expect(@([SDLProtocolHeader determineVersion:messageV2])).to(equal(@2));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolMessageSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolMessageSpec.m
index 12b634218..16e8d6091 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolMessageSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolMessageSpec.m
@@ -38,18 +38,6 @@ describe(@"MessageWithHeader Tests", ^ {
});
});
-describe(@"DetermineVersion Tests", ^ {
- it(@"Should return the correct version", ^ {
- const char bytesV1[8] = {0x10 | SDLFrameType_First, SDLServiceType_BulkData, SDLFrameData_StartSessionACK, 0x5E, 0x00, 0x00, 0x00, 0x00};
- NSData* messageV1 = [NSData dataWithBytes:bytesV1 length:8];
- expect(@([SDLProtocolMessage determineVersion:messageV1])).to(equal(@1));
-
- const char bytesV2[12] = {0x20 | SDLFrameType_First, SDLServiceType_BulkData, SDLFrameData_StartSessionACK, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x44};
- NSData* messageV2 = [NSData dataWithBytes:bytesV2 length:12];
- expect(@([SDLProtocolMessage determineVersion:messageV2])).to(equal(@2));
- });
-});
-
describe(@"Data tests", ^ {
it(@"Should return the correct data", ^ {
SDLProtocolMessage* testMessage = [[SDLProtocolMessage alloc] init];
@@ -69,4 +57,4 @@ describe(@"Data tests", ^ {
});
});
-QuickSpecEnd \ No newline at end of file
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
index e7224cc67..6512317a0 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
@@ -52,7 +52,7 @@ describe(@"Send StartService Tests", ^ {
}] sendData:[OCMArg any]];
testProtocol.transport = transportMock;
- [testProtocol startServiceWithType:SDLServiceType_BulkData];
+ [testProtocol startServiceWithType:SDLServiceType_BulkData payload:nil];
expect(@(verified)).toEventually(beTruthy());
});
@@ -74,7 +74,7 @@ describe(@"Send EndSession Tests", ^ {
SDLV1ProtocolHeader *testHeader = [[SDLV1ProtocolHeader alloc] init];
testHeader.serviceType = SDLServiceType_RPC;
testHeader.sessionID = 0x03;
- [testProtocol handleProtocolStartSessionACK:testHeader];
+ [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]];
__block BOOL verified = NO;
id transportMock = OCMClassMock([SDLAbstractTransport class]);
@@ -103,7 +103,7 @@ describe(@"Send EndSession Tests", ^ {
SDLV2ProtocolHeader *testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:2];
testHeader.serviceType = SDLServiceType_RPC;
testHeader.sessionID = 0x61;
- [testProtocol handleProtocolStartSessionACK:testHeader];
+ [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]];
__block BOOL verified = NO;
id transportMock = OCMClassMock([SDLAbstractTransport class]);
@@ -141,7 +141,7 @@ describe(@"SendRPCRequest Tests", ^ {
SDLV1ProtocolHeader *testHeader = [[SDLV1ProtocolHeader alloc] init];
testHeader.serviceType = SDLServiceType_RPC;
testHeader.sessionID = 0xFF;
- [testProtocol handleProtocolStartSessionACK:testHeader];
+ [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]];
__block BOOL verified = NO;
id transportMock = OCMClassMock([SDLAbstractTransport class]);
@@ -181,7 +181,7 @@ describe(@"SendRPCRequest Tests", ^ {
SDLV2ProtocolHeader *testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:2];
testHeader.serviceType = SDLServiceType_RPC;
testHeader.sessionID = 0x01;
- [testProtocol handleProtocolStartSessionACK:testHeader];
+ [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]];
__block BOOL verified = NO;
id transportMock = OCMClassMock([SDLAbstractTransport class]);
@@ -339,9 +339,9 @@ xdescribe(@"HandleProtocolSessionStarted Tests", ^ {
testHeader.bytesInPayload = 0;
[testProtocol.protocolDelegateTable addObject:delegateMock];
- [testProtocol handleProtocolStartSessionACK:testHeader];
+ [testProtocol handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]];
- OCMExpect([delegateMock handleProtocolStartSessionACK:testHeader]);
+ OCMExpect([delegateMock handleProtocolStartServiceACKMessage:[SDLProtocolMessage messageWithHeader:testHeader andPayload:nil]]);
});
});
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/SDLProtocolMessageDisassemblerSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/SDLProtocolMessageDisassemblerSpec.m
index 04fb30c5e..27aedff5b 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/SDLProtocolMessageDisassemblerSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/SDLProtocolMessageDisassemblerSpec.m
@@ -24,7 +24,7 @@ describe(@"Disassemble Tests", ^ {
char dummyBytes[dataLength];
SDLGlobals *globals = [[SDLGlobals alloc] init];
- globals.maxHeadUnitVersion = 2;
+ globals.maxHeadUnitVersion = @"2.0.0";
const char testPayloadHeader[12] = {0x20, 0x55, 0x64, 0x73, 0x12, 0x34, 0x43, 0x21, (dataLength >> 24) & 0xFF, (dataLength >> 16) & 0xFF, (dataLength >> 8) & 0xFF, dataLength & 0xFF};
@@ -43,7 +43,7 @@ describe(@"Disassemble Tests", ^ {
testMessage.header = testHeader;
testMessage.payload = payloadData;
- NSArray* messageList = [SDLProtocolMessageDisassembler disassemble:testMessage withLimit:globals.maxMTUSize];
+ NSArray* messageList = [SDLProtocolMessageDisassembler disassemble:testMessage withLimit:[globals mtuSizeForServiceType:testHeader.serviceType]];
//Payload length per message
UInt32 payloadLength = 1012; // v1/2 MTU(1024) - header length(12)
@@ -92,4 +92,4 @@ describe(@"Disassemble Tests", ^ {
});
});
-QuickSpecEnd \ No newline at end of file
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/SDLProtocolReceivedMessageRouterSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/SDLProtocolReceivedMessageRouterSpec.m
index f045ae721..a9ceacba5 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/SDLProtocolReceivedMessageRouterSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/SDLProtocolReceivedMessageRouterSpec.m
@@ -38,7 +38,7 @@ describe(@"HandleReceivedMessage Tests", ^ {
router.delegate = delegateMock;
[router handleReceivedMessage:testMessage];
- OCMVerify([delegateMock handleProtocolStartSessionACK:testMessage.header]);
+ OCMVerify([delegateMock handleProtocolStartServiceACKMessage:testMessage]);
});
});
diff --git a/SmartDeviceLinkTests/UtilitiesSpecs/SDLGlobalsSpec.m b/SmartDeviceLinkTests/UtilitiesSpecs/SDLGlobalsSpec.m
index 8acaaadcf..191f7b705 100644
--- a/SmartDeviceLinkTests/UtilitiesSpecs/SDLGlobalsSpec.m
+++ b/SmartDeviceLinkTests/UtilitiesSpecs/SDLGlobalsSpec.m
@@ -7,8 +7,6 @@ QuickSpecBegin(SDLGlobalsSpec)
describe(@"The SDLGlobals class", ^{
__block SDLGlobals *testGlobals = nil;
- __block NSNumber *v1And2MTUSize = @1024;
- __block NSNumber *v3And4MTUSize = @131084;
beforeEach(^{
testGlobals = [[SDLGlobals alloc] init];
@@ -16,70 +14,129 @@ describe(@"The SDLGlobals class", ^{
describe(@"when just initialized", ^{
it(@"should properly set protocol version", ^{
- expect(@(testGlobals.protocolVersion)).to(equal(@1));
+ expect(testGlobals.protocolVersion).to(equal(@"1.0.0"));
+ });
+
+ it(@"should properly set the major protocol version", ^{
+ expect(testGlobals.majorProtocolVersion).to(equal(1));
});
it(@"should properly set max head unit version", ^{
- expect(@(testGlobals.maxHeadUnitVersion)).to(equal(@0));
+ expect(testGlobals.maxHeadUnitVersion).to(equal(@"0.0.0"));
});
- it(@"should throw an exception trying to get max MTU size", ^{
- expect(@(testGlobals.maxMTUSize)).to(equal(v1And2MTUSize));
+ it(@"should give the v1 MTU size", ^{
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_RPC]).to(equal(SDLV1MTUSize));
});
});
describe(@"setting maxHeadUnitVersion should alter negotiated protocol version", ^{
it(@"should use the max head unit version when lower than max proxy version", ^{
- NSUInteger someIntLowerThanMaxProxyVersion = 2;
- testGlobals.maxHeadUnitVersion = someIntLowerThanMaxProxyVersion;
- expect(@(testGlobals.protocolVersion)).to(equal(@(someIntLowerThanMaxProxyVersion)));
- expect(@(testGlobals.maxHeadUnitVersion)).to(equal(@(someIntLowerThanMaxProxyVersion)));
+ NSString *someVersionLowerThanMaxProxyVersion = @"2.0.0";
+ testGlobals.maxHeadUnitVersion = someVersionLowerThanMaxProxyVersion;
+
+ expect(testGlobals.protocolVersion).to(equal(someVersionLowerThanMaxProxyVersion));
+ expect(testGlobals.maxHeadUnitVersion).to(equal(someVersionLowerThanMaxProxyVersion));
});
it(@"should use the max proxy version when lower than max head unit version", ^{
- NSUInteger someIntHigherThanMaxProxyVersion = 1000;
- testGlobals.maxHeadUnitVersion = someIntHigherThanMaxProxyVersion;
- expect(@(testGlobals.protocolVersion)).to(beLessThan(@(someIntHigherThanMaxProxyVersion)));
- expect(@(testGlobals.maxHeadUnitVersion)).to(equal(@(someIntHigherThanMaxProxyVersion)));
+ NSString *someVersionHigherThanMaxProxyVersion = @"1000.0.0";
+ testGlobals.maxHeadUnitVersion = someVersionHigherThanMaxProxyVersion;
+
+ expect(([testGlobals.protocolVersion compare:someVersionHigherThanMaxProxyVersion options:NSNumericSearch] == NSOrderedDescending)).to(beFalsy());
+ expect(testGlobals.maxHeadUnitVersion).to(equal(someVersionHigherThanMaxProxyVersion));
});
});
describe(@"getting the max MTU version", ^{
context(@"when protocol version is 1 - 2", ^{
it(@"should return the correct value when protocol version is 1", ^{
- testGlobals.maxHeadUnitVersion = 1;
- expect(@(testGlobals.maxMTUSize)).to(equal(v1And2MTUSize));
+ testGlobals.maxHeadUnitVersion = @"1.0.0";
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_RPC]).to(equal(SDLV1MTUSize));
});
it(@"should return the correct value when protocol version is 2", ^{
- testGlobals.maxHeadUnitVersion = 2;
- expect(@(testGlobals.maxMTUSize)).to(equal(v1And2MTUSize));
+ testGlobals.maxHeadUnitVersion = @"2.0.0";
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_RPC]).to(equal(SDLV1MTUSize));
});
});
context(@"when protocol version is 3 - 4", ^{
it(@"should return the correct value when protocol version is 3", ^{
- testGlobals.maxHeadUnitVersion = 3;
- expect(@(testGlobals.maxMTUSize)).to(equal(v3And4MTUSize));
+ testGlobals.maxHeadUnitVersion = @"3.0.0";
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_RPC]).to(equal(SDLV3MTUSize));
});
it(@"should return the correct value when protocol version is 4", ^{
- testGlobals.maxHeadUnitVersion = 4;
- expect(@(testGlobals.maxMTUSize)).to(equal(v3And4MTUSize));
+ testGlobals.maxHeadUnitVersion = @"4.0.0";
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_RPC]).to(equal(SDLV3MTUSize));
});
describe(@"when the max proxy version is lower than max head unit version", ^{
beforeEach(^{
- NSUInteger someIntHigherThanMaxProxyVersion = 1000;
- testGlobals.maxHeadUnitVersion = someIntHigherThanMaxProxyVersion;
+ NSString *someVersionHigherThanMaxProxyVersion = @"1000.0.0";
+ testGlobals.maxHeadUnitVersion = someVersionHigherThanMaxProxyVersion;
});
it(@"should return the v1 - 2 value", ^{
- expect(@(testGlobals.maxMTUSize)).to(equal(v1And2MTUSize));
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_RPC]).to(equal(SDLV1MTUSize));
});
});
});
});
+
+#pragma mark Dynamic MTU
+ describe(@"when dynamically setting MTU on protocol version 5", ^{
+ __block NSUInteger dynamicMTUSize1 = 12345;
+ __block NSUInteger dynamicMTUSize2 = 54321;
+
+ beforeEach(^{
+ testGlobals.maxHeadUnitVersion = @"5.0.0";
+ });
+
+ context(@"Setting the RPC service MTU", ^{
+ beforeEach(^{
+ [testGlobals setDynamicMTUSize:dynamicMTUSize1 forServiceType:SDLServiceType_RPC];
+ });
+
+ it(@"should set the RPC service MTU", ^{
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_RPC]).to(equal(dynamicMTUSize1));
+ });
+
+ it(@"should have the video service fall back to the RPC service MTU", ^{
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_Video]).to(equal(dynamicMTUSize1));
+ });
+ });
+
+ context(@"setting the video service MTU", ^{
+ beforeEach(^{
+ [testGlobals setDynamicMTUSize:dynamicMTUSize1 forServiceType:SDLServiceType_Video];
+ });
+
+ it(@"should not set the RPC service MTU", ^{
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_RPC]).to(equal(SDLV3MTUSize));
+ });
+
+ it(@"should have the video service fall back to the RPC service MTU", ^{
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_Video]).to(equal(dynamicMTUSize1));
+ });
+ });
+
+ context(@"setting both the video service and RPC service MTU", ^{
+ beforeEach(^{
+ [testGlobals setDynamicMTUSize:dynamicMTUSize1 forServiceType:SDLServiceType_RPC];
+ [testGlobals setDynamicMTUSize:dynamicMTUSize2 forServiceType:SDLServiceType_Video];
+ });
+
+ it(@"should set the RPC service MTU", ^{
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_RPC]).to(equal(dynamicMTUSize1));
+ });
+
+ it(@"should have the video service fall back to the RPC service MTU", ^{
+ expect([testGlobals mtuSizeForServiceType:SDLServiceType_Video]).to(equal(dynamicMTUSize2));
+ });
+ });
+ });
});
QuickSpecEnd