public void TestAcquireLockNormalAfterReleaseLockInOtherThread() { // Main try { // ロック1回目 NbSsePushReceiveClient.AcquireLock(); // 解除1回 NbSsePushReceiveClient.ReleaseLock(); } catch (Exception) { Assert.Fail("Exception"); } try { Task.Run(() => { NbSsePushReceiveClient.AcquireLock(); }).Wait(); } catch (AggregateException) { Assert.Fail("Exception"); } finally { NbSsePushReceiveClient.ReleaseLock(); } }
public void TestAutoRecoveryNormal() { NbSsePushReceiveClient client = new NbSsePushReceiveClient(); var res = new Mock <HttpWebResponse>(); var responseBody = CreateBody(true, true); var response = new MockRestResponse(HttpStatusCode.OK, responseBody.ToString()); executor.AddResponse(response); // Main client.AutoRecovery(HttpStatusCode.Unauthorized, res.Object); // Check Request CheckRequest(); // ストレージ内のインスタレーション情報存在チェック CheckSaveStorage(); // Check ReleaseLock try { // AcquireLock()でExceptionが起きないことを確認 NbSsePushReceiveClient.AcquireLock(); } catch (Exception) { Assert.Fail("Exception"); } NbSsePushReceiveClient.ReleaseLock(); }
public void TestReleaseLockExceptionNoSseInfo() { DeleteStorage(); // SSE情報なしでストレージに保存 SaveInstallationToStorage(true, false); var res = new Mock <HttpWebResponse>(); NbSsePushReceiveClient client = new NbSsePushReceiveClient(); // Main Assert.IsFalse(client.AutoRecovery(HttpStatusCode.Unauthorized, res.Object)); // Check ReleaseLock try { // AcquireLock()でExceptionが起きないことを確認 NbSsePushReceiveClient.AcquireLock(); } catch (Exception) { Assert.Fail("Exception"); } NbSsePushReceiveClient.ReleaseLock(); }
public void TestConstructorNormal() { // Main NbSsePushReceiveClient client = new NbSsePushReceiveClient(); // Check State Assert.AreEqual(client._clientState, NbSsePushReceiveClient.State.Idle); }
public void TearDown() { if (_client != null) { NbSsePushReceiveClient.ReleaseLock(); _client.Disconnect(); _client._sseClient = null; _client = null; } }
public void TestConnectNormal() { NbSsePushReceiveClient client = new NbSsePushReceiveClient(); // Main client.Connect(); // Check State Assert.AreEqual(client._clientState, NbSsePushReceiveClient.State.Connect); }
public void TestReleaseLockNormalWithoutAcquire() { try { // Main NbSsePushReceiveClient.ReleaseLock(); } catch (Exception) { Assert.Fail("Exception"); } }
public void TestConnecExceptionNoId() { DeleteStorage(); // インスタレーションIDなしでストレージに保存 SaveInstallationToStorage(false, true); NbSsePushReceiveClient client = new NbSsePushReceiveClient(); // Main client.Connect(); Assert.Fail("No Exception"); }
public void TestAutoRecoveryExceptionFailLock() { NbSsePushReceiveClient client = new NbSsePushReceiveClient(); var res = new Mock <HttpWebResponse>(); // ロック状態にする NbSsePushReceiveClient.AcquireLock(); // Main Assert.IsFalse(client.AutoRecovery(HttpStatusCode.Unauthorized, res.Object)); NbSsePushReceiveClient.ReleaseLock(); }
public void TestAcquireLockNormal() { // Main try { NbSsePushReceiveClient.AcquireLock(); } catch (Exception) { Assert.Fail("Exception"); } finally { // 後始末 NbSsePushReceiveClient.ReleaseLock(); } }
public void TestAcquireLockNormalOtherThread() { try { Task.Run(() => { NbSsePushReceiveClient.AcquireLock(); }).Wait(); } catch (AggregateException) { Assert.Fail("Exception"); } finally { NbSsePushReceiveClient.ReleaseLock(); } }
public void TestConnecExceptionNoSseInfo() { DeleteStorage(); SaveInstallationToStorage(true, false); NbSsePushReceiveClient client = new NbSsePushReceiveClient(); // Main try { client.Connect(); Assert.Fail("No Exception"); } catch (NbHttpException e) { Assert.AreEqual(e.StatusCode, HttpStatusCode.BadRequest); } }
public void TestConnectExceptionFailer() { NbSsePushReceiveClient client = new NbSsePushReceiveClient(); // 接続状態を「接続中」に設定 client._clientState = NbSsePushReceiveClient.State.Connect; // Main try { client.Connect(); Assert.Fail("No Exception"); } catch (NbHttpException e) { Assert.AreEqual(e.StatusCode, HttpStatusCode.BadRequest); } }
public async void TestAutoRecoveryCallbackLocked() { // For Callback Wait Class ManualResetEvent manualEvent = new ManualResetEvent(false); // Save Installation var installation = await ITUtil.UpsertInstallation(); // Set Invalid Password in order to execute AutoRecovery installation.Password = "******"; _client = new NbSsePushReceiveClient(); // Set Lock NbSsePushReceiveClient.AcquireLock(); // Register Error Callback _client.RegisterOnError((statusCode, errorInfo) => { _errorCalledCount++; if (statusCode != HttpStatusCode.Unauthorized) { SetAssert("Not Unauthorized Error: " + statusCode.ToString()); } manualEvent.Set(); }); // Main _client.Connect(); // Wait for OnError Callback with Timeout manualEvent.WaitOne(10000); // Test中にAssert.Fail()するとmanualEvent.Setが呼ばれずハングするので、最後にAssertionをthrowする if (_isAssertionExists) { ThrowAssert(); } // Error Callback: Once Assert.AreEqual(1, _errorCalledCount); }
public void TestAcquireLockException2TimesFromSubThread() { try { // ロック1回目 NbSsePushReceiveClient.AcquireLock(); } catch (Exception) { Assert.Fail("Exception"); } try { Task.Run(() => { // ロック2回目(他スレッド) NbSsePushReceiveClient.AcquireLock(); }).Wait(); Assert.Fail("No Exception"); } catch (AggregateException ae) { ae.Handle((x) => { if (x is InvalidOperationException) { // OK return(true); } else { Assert.Fail("Invalid Exception"); return(false); } }); } finally { NbSsePushReceiveClient.ReleaseLock(); } }
public void TestAcquireLockException2Times() { // Main try { // 1回目 NbSsePushReceiveClient.AcquireLock(); // 2回目 NbSsePushReceiveClient.AcquireLock(); Assert.Fail("No Exception"); } catch (InvalidOperationException) { // OK } finally { // 後始末 NbSsePushReceiveClient.ReleaseLock(); } }
public void TestReleaseLockNormal() { NbSsePushReceiveClient.AcquireLock(); // Main NbSsePushReceiveClient.ReleaseLock(); try { // AcquireLock()でExceptionが起きないことを確認 Task.Run(() => { NbSsePushReceiveClient.AcquireLock(); NbSsePushReceiveClient.ReleaseLock(); }).Wait(); } catch (AggregateException) { Assert.Fail("Exception"); } }
public void TestReleaseLockNormalOtherThread() { NbSsePushReceiveClient.AcquireLock(); // Main Task.Run(() => { NbSsePushReceiveClient.ReleaseLock(); }).Wait(); try { // ロックできることを確認 NbSsePushReceiveClient.AcquireLock(); } catch (InvalidOperationException) { Assert.Fail("Exception"); } finally { NbSsePushReceiveClient.ReleaseLock(); } }
public async void TestAutoRecoveryNormal() { // For Callback Wait Class ManualResetEvent manualEventForOnOpen = new ManualResetEvent(false); ManualResetEvent manualEventForOnMessage = new ManualResetEvent(false); // Save Installation var installation = await ITUtil.UpsertInstallation(); // Set Invalid Password installation.Password = "******"; _client = new NbSsePushReceiveClient(); // Register Message Callback _client.RegisterOnMessage("TestEventType", (message) => { _messageCalledCount++; manualEventForOnMessage.Set(); }); // Register Error Callback _client.RegisterOnError((statusCode, errorInfo) => { _errorCalledCount++; }); // Register Open Callback _client.RegisterOnOpen(() => { _openCalledCount++; manualEventForOnOpen.Set(); }); // Register Close Callback _client.RegisterOnClose(() => { _closeCalledCount++; }); // Main _client.Connect(); // Wait for OnOpen Callback with Timeout manualEventForOnOpen.WaitOne(10000); // Open Callback: Once Assert.AreEqual(1, _openCalledCount); // Send Message var nebulaPush = new NbPush(); nebulaPush.Query = new NbQuery().EqualTo("email", "*****@*****.**"); nebulaPush.Message = "This is Test."; var sse = new NbSseFields(); sse.EventId = "TestId"; sse.EventType = "TestEventType"; nebulaPush.SseFields = sse; await nebulaPush.SendAsync(); // Wait for OnMessage Callback with Timeout manualEventForOnMessage.WaitOne(10000); // Check Callback Count // Open Callback: Once Assert.AreEqual(1, _openCalledCount); // Close Callback: Once Assert.AreEqual(1, _closeCalledCount); // Error Callback: None Assert.AreEqual(0, _errorCalledCount); // Message Callback: Once Assert.AreEqual(1, _messageCalledCount); // Check Installation var installationAfterAutoRecovery = NbSsePushInstallation.GetCurrentInstallation(); ITUtil.CheckCommonResponse(installationAfterAutoRecovery); Assert.AreEqual(installation.Channels, installationAfterAutoRecovery.Channels); Assert.AreEqual(installation.AllowedSenders, installationAfterAutoRecovery.AllowedSenders); Assert.IsNull(installationAfterAutoRecovery.Owner); Assert.AreEqual(installation.Options, installationAfterAutoRecovery.Options); // Check Storage ITUtil.CheckSaveStorage(installationAfterAutoRecovery); }
public void TestRegisterOnMessageExceptionNullCallback() { NbSsePushReceiveClient client = new NbSsePushReceiveClient(); client.RegisterOnMessage("message", null); }
public void TestRegisterOnMessageExceptionNullEventType() { NbSsePushReceiveClient client = new NbSsePushReceiveClient(); client.RegisterOnMessage(null, msg => { }); }