static async Task UnitTestAsync() { Console.WriteLine("Setup()..."); const string Access = "YourAccessTokenValueHere"; const string Admin = "YourAdminTokenValueHere"; var zone = new DropZoneConfig { BaseUrl = "http://*****:*****@"C:\Users\johnm\research\RR-Dynamic-20201216-C.result.json"; string bigFishContent = null; using (var t = new StreamReader(bigFish)) { bigFishContent = t.ReadToEnd(); result = await restApiUpdateMaster.SetBlob("TestItem02", bigFishContent); } testPassed = result.HandleAs == Result.State.OK; Console.WriteLine(testPassed ? "pass" : $"FAIL, expected: OK, got: {result.HandleAs}"); if (!testPassed) { UnexpectedResult(); } testPassed = true; Console.Write("Clear DropZone ...: "); result = await restApiUpdateMaster.Clear(); testPassed = result.HandleAs == Result.State.OK; Console.WriteLine(testPassed ? "pass" : $"FAIL, expected: OK, got: {result.HandleAs}"); if (!testPassed) { UnexpectedResult(); } testPassed = true; Console.WriteLine("Read blob list ...: "); result = await restApiUpdateMaster.ListBlobs(); testPassed = result.HandleAs == Result.State.OK; Console.WriteLine(testPassed ? "pass" : $"FAIL, expected: OK, got: {result.HandleAs}"); if (testPassed) { Console.Write($" Blob list has previous items ...: "); var blobCount = Serializer <System.Collections.Generic.List <System.String> > .FromJson(result.Content).Count; testPassed = (blobCount == 2); Console.WriteLine(testPassed ? "pass" : $"FAIL, expected: 2, got: {blobCount}"); } if (!testPassed) { UnexpectedResult(); } testPassed = true; // Read the blob item TestItem01: test for proper content. Console.Write("Read Blob TestItem01 ...: "); result = await restApiUpdateMaster.GetBlob("TestItem01"); testPassed = result.HandleAs == Result.State.OK; Console.WriteLine(testPassed ? "pass" : $"FAIL, expected: OK, got: {result.HandleAs}"); if (testPassed) { Console.Write(" Valid Blob Content TestItem01 ...: "); testPassed |= string.Compare(result.Content, TestItem01Value, false) == 0; Console.WriteLine(testPassed ? "pass" : $"FAIL, expected: (empty string), got: {result.Content}"); } if (!testPassed) { UnexpectedResult(); } testPassed = true; // Read the blob item TestItem01: test for proper content. Console.Write("Read Blob TestItem02 ...: "); result = await restApiUpdateMaster.GetBlob("TestItem02"); testPassed = result.HandleAs == Result.State.OK; Console.WriteLine(testPassed ? "pass" : $"FAIL, expected: OK, got: {result.HandleAs}"); if (testPassed) { Console.Write(" Valid Blob Content TestItem02 ...: "); testPassed |= string.Compare(result.Content, bigFishContent, false) == 0; Console.WriteLine(testPassed ? "pass" : $"FAIL, expected: (empty string), got: {result.Content}"); } if (!testPassed) { UnexpectedResult(); } testPassed = true; } catch (Exception err) { Console.WriteLine($"Untrapped: {err.Message}"); } Console.WriteLine("---------------------------"); Console.WriteLine("### TESTING ENDS ###"); Console.WriteLine("---------------------------"); #if DEBUG Console.WriteLine(); Console.WriteLine("Press ENTER to finish"); Console.ReadLine(); #endif }
static async Task RunAsync() { const string Access = "YourAccessTokenValueHere"; const string Admin = "YourAdminTokenValueHere"; var zone = new DropZoneConfig { BaseUrl = "http://localhost:5000", ZoneName = "Update", Password = string.Empty, Salt = string.Empty, UseEncryption = false, AccessToken = Access, AdminToken = Admin, TimeoutSeconds = 10 }; var restApiUpdateMaster = new RestApiCalls(zone); try { Console.WriteLine("CheckHeartbeat()..."); Result result = await restApiUpdateMaster.CheckHeartbeat(); DisplayResult(result, 100); if (result.HandleAs == Result.State.InvalidAuthentication) { Console.WriteLine("Invalid auth token, testing halted... "); return; } Console.WriteLine("Reset()..."); result = await restApiUpdateMaster.Reset(); DisplayResult(result, 100); if (result.HandleAs == Result.State.InvalidAuthentication) { Console.WriteLine("Invalid admin token, testing halted... "); return; } Console.WriteLine("SetMetrics()... fails."); result = await restApiUpdateMaster.SetMetrics(new Common.Dto.DropZoneMetrics { MaxPayloadCount = 1, MaxPayloadSize = 1, MaxReferencesCount = 2, MaxReferenceSize = 2 }); DisplayResult(result, -1); Console.WriteLine("ListReferences()... "); result = await restApiUpdateMaster.ListReferences(); DisplayResult(result, -1); Console.WriteLine("GetReference()... "); result = await restApiUpdateMaster.GetReference("Test-Ref01"); DisplayResult(result, 1000); Console.WriteLine("ListReferences()... "); result = await restApiUpdateMaster.ListReferences(); DisplayResult(result, -1); Console.WriteLine("SetReference()... "); result = await restApiUpdateMaster.SetReference("Test-Ref01", "test ref 1"); DisplayResult(result, 1000); Console.WriteLine("ListReferences()... "); result = await restApiUpdateMaster.ListReferences(); DisplayResult(result, -1); Console.WriteLine("GetReference()... "); result = await restApiUpdateMaster.GetReference("Test-Ref01"); DisplayResult(result, 1000); Console.WriteLine("SetReference()... Perishable"); result = await restApiUpdateMaster.SetReference("Test-Ref02-Perish-5-Sec", "this will go way", DateTime.Now.AddSeconds(5)); DisplayResult(result, 1000); Console.WriteLine("ListReferences()... shows static and perishable"); result = await restApiUpdateMaster.ListReferences(); DisplayResult(result, -1); Console.WriteLine("GetReference()... Perishable ... < 1 sec (finds it)"); result = await restApiUpdateMaster.GetReference("Test-Ref02-Perish-5-Sec"); DisplayResult(result, 1000); Console.WriteLine("Wait 5 seconds for reference to expire..."); Thread.Sleep(5000); Console.WriteLine("ListReferences()... shows static only... perishable has expired"); result = await restApiUpdateMaster.ListReferences(); DisplayResult(result, -1); Console.WriteLine("GetReference()... Perishable ... > 5 sec (perished)"); result = await restApiUpdateMaster.GetReference("RefTimed-Good"); DisplayResult(result, -1); Console.WriteLine("SetReference()"); result = await restApiUpdateMaster.SetReference("Test-Ref03", "this will go way"); Console.WriteLine("GetReference()"); result = await restApiUpdateMaster.GetReference("Test-Ref03"); Console.WriteLine("DropReference()"); result = await restApiUpdateMaster.DropReference("Test-Ref03"); Console.WriteLine("GetReference()"); result = await restApiUpdateMaster.GetReference("Test-Ref03"); DisplayResult(result, -1); Console.WriteLine("SetReference()... BIG..."); var bigData = new string('X', 524288); Console.WriteLine($"{bigData.Length}"); result = await restApiUpdateMaster.SetReference("BIG", bigData); DisplayResult(result, 1000); Console.WriteLine("GetReference()... BIG..."); result = await restApiUpdateMaster.GetReference("BIG"); Console.WriteLine($"{result.Message.Length}"); result.Message = string.Empty; DisplayResult(result, 1000); Console.WriteLine("SetReference()... HUGE... rejected due to size"); var hugeData = new string('X', 41000000); Console.WriteLine($"{hugeData.Length}"); result = await restApiUpdateMaster.SetReference("HUGE", hugeData); DisplayResult(result, 1000); Console.WriteLine("GetReference()... HUGE..."); result = await restApiUpdateMaster.GetReference("HUGE"); Console.WriteLine($"{result.Message.Length}"); result.Message = string.Empty; DisplayResult(result, -1); Console.WriteLine("GetStatistics()... "); result = await restApiUpdateMaster.GetStatistics(); DisplayResult(result, -1); Console.WriteLine("GetSecurityInfo()... "); result = await restApiUpdateMaster.GetSecurity(); DisplayResult(result, -1); // Payloads and recipients // Test a payload with and without a specific recipient Console.WriteLine("*** Drop off to global (1) and to a specific recipient (1)"); Console.WriteLine($"Add \"Global payload\" for global queue in the zone ... "); result = await restApiUpdateMaster.DropOff("Global payload"); DisplayResult(result, 0); var recipient = "Tim"; Console.WriteLine($"Add \"Tim's payload\" for {recipient} queue in the zone ... "); result = await restApiUpdateMaster.DropOff("Tim's payload", recipient); DisplayResult(result, 0); Console.WriteLine($"Retrieve payload for recipient {recipient} ..."); result = await restApiUpdateMaster.Pickup(recipient); DisplayResult(result, 0); Console.WriteLine($"Retrieve payload for recipient {recipient} ... should have nothing"); result = await restApiUpdateMaster.Pickup(recipient); DisplayResult(result, 0); Console.WriteLine($"Retrieve payload for global use ..."); result = await restApiUpdateMaster.Pickup(); DisplayResult(result, 0); Console.WriteLine($"Retrieve payload for global use ... should have nothing"); result = await restApiUpdateMaster.Pickup(); DisplayResult(result, -1); // Other payloads tests. string[] set = new string[] { "Tallahunda", "Kookamunga", "Whatever" }; Console.WriteLine("*** Drop off some data .. which expires ***"); for (int index = 0; index < 5; index++) { Console.WriteLine($"Add {index}: {set[index % 3]}... "); result = await restApiUpdateMaster.DropOff(set[index % 3] + $"{index}", DateTime.Now.AddSeconds(3 + index)); DisplayResult(result, 0); } Console.WriteLine("Wait 5 for reference to expire..."); Thread.Sleep(5000); Console.WriteLine("*** Pickup some data .. some of which has expired ***"); for (int index = 0; index < 5; index++) { Console.WriteLine($"Retrieve {index} from {set[index % 3]}: "); result = await restApiUpdateMaster.Pickup(); DisplayResult(result, 0); } Console.WriteLine("*** Clear ***"); result = await restApiUpdateMaster.Clear(); DisplayResult(result, -1); Console.WriteLine("*** Drop off some data.. places 501 items when 500 is the max ***"); //for (int index = 0; index < 501; index++) for (int index = 0; index < 101; index++) { Console.WriteLine($"Add {index}: {set[index % 3]}... "); result = await restApiUpdateMaster.DropOff(set[index % 3]); DisplayResult(result, index < 5 ? 1000 : 0); } Console.WriteLine("GetStatistics()..."); result = await restApiUpdateMaster.GetStatistics(); DisplayResult(result, -1); Console.WriteLine("*** Pickup some data ***"); //for (int index = 0; index < 502; index++) for (int index = 0; index < 102; index++) { Console.WriteLine($"Retrieve {index} from {set[index % 3]}: "); result = await restApiUpdateMaster.Pickup(); DisplayResult(result, index == 2 ? -1 : (index < 5 ? 1000 : 0)); } Console.WriteLine("*** List references ***"); result = await restApiUpdateMaster.ListReferences(); DisplayResult(result, -1); Console.WriteLine("Overload references..."); for (int index = 0; index < 48; index++) { Console.WriteLine($"SetReference(Ref-{BOG.SwissArmyKnife.Formatting.RJLZ(index, 2)}... "); result = await restApiUpdateMaster.SetReference($"Ref-{BOG.SwissArmyKnife.Formatting.RJLZ(index, 2)}", $"test ref {index}"); DisplayResult(result, 0); } Console.WriteLine("*** List references after overload ***"); result = await restApiUpdateMaster.ListReferences(); DisplayResult(result, -1); Console.WriteLine("GetStatistics()... "); result = await restApiUpdateMaster.GetStatistics(); DisplayResult(result, -1); Console.WriteLine("*** Reset ***"); result = await restApiUpdateMaster.Reset(); DisplayResult(result, 2000); Console.WriteLine("*** Shutdown ***"); result = await restApiUpdateMaster.Shutdown(); DisplayResult(result, 2000); Console.WriteLine("*** Shutdown (with no answer) ***"); result = await restApiUpdateMaster.Shutdown(); DisplayResult(result, 2000); } catch (Exception err) { Console.WriteLine($"Untrapped: {err.Message}"); } Console.WriteLine("Done"); Console.ReadLine(); }