public void ClientRuntimeContextService_Should_Rethrow_GenericException() { // expecting generic exception re-thrown var service = new DefaultClientRuntimeContextService(); service.CustomExecuteQueryHandler += (cnt) => { throw new Exception("Can't do anything!"); }; service.ExecuteQuery(default(ClientRuntimeContext)); }
public void ClientRuntimeContextService_Default_Throtting_Setting_As_Recommended() { // Align CSOM throttling setting with MS recommendations, open up API #849 // https://github.com/SubPointSolutions/spmeta2/issues/849 // https://msdn.microsoft.com/en-us/library/office/dn889829.aspx?f=255&MSPPError=-2147217396#BKMK_Bestpracticestohandlethrottling // https://www.yammer.com/spmeta2feedback/#/threads/show?threadId=725945901&messageId=725945901 // expecting generic exception re-thrown var service = new DefaultClientRuntimeContextService(); Assert.AreEqual(5, service.ExecuteQueryRetryAttempts); Assert.AreEqual(30000, service.ExecuteQueryDelayInMilliseconds); Assert.AreEqual(2, service.ExecuteQueryRetryDelayMultiplier); }
public void ClientRuntimeContextService_Should_MakeNAttempts_And_ThrowException() { // expecting SPMeta2Exception AND currentReconnectCount == ExecuteQueryRetryAttempts // tried our best, but failed var currentReconnectCount = 0; var service = new DefaultClientRuntimeContextService(); // to run test faster service.ExecuteQueryDelayInMilliseconds = 1; service.CustomExecuteQueryHandler += (cnt) => { currentReconnectCount++; var webResponce = Activator.CreateInstance<HttpWebResponse>(); var statusCodeProp = webResponce.GetType() .GetField("m_StatusCode", BindingFlags.NonPublic | BindingFlags.Instance); statusCodeProp.SetValue(webResponce, 429); var ex = new WebException("Can't connect to O365", null, (WebExceptionStatus)402, webResponce); throw ex; }; try { service.ExecuteQuery(default(ClientRuntimeContext)); } catch (Exception e) { Assert.AreEqual(currentReconnectCount, service.ExecuteQueryRetryAttempts); Assert.IsTrue(e is SPMeta2Exception); } }
public void ClientRuntimeContextService_Should_ThrowGenericException_On_UnsupportHttpStatuses() { // expecting web exception on unknown http statuses var currentReconnectCount = 0; var service = new DefaultClientRuntimeContextService(); var rndService = new DefaultRandomService(); var supportedHttpStatuses = new[] { 700, 800, 900 }; // to run test faster service.ExecuteQueryDelayInMilliseconds = 1; service.CustomExecuteQueryHandler += (cnt) => { currentReconnectCount++; var webResponce = Activator.CreateInstance<HttpWebResponse>(); var sttausCode = rndService.RandomFromArray(supportedHttpStatuses); SetStatusCode(webResponce, sttausCode); var ex = new WebException("Can't connect to O365", null, (WebExceptionStatus)402, webResponce); throw ex; }; service.ExecuteQuery(default(ClientRuntimeContext)); }
public void ClientRuntimeContextService_Should_SupportHttpStatuses() { // expecting SPMeta2Exception on known http statuses var currentReconnectCount = 0; var service = new DefaultClientRuntimeContextService(); var rndService = new DefaultRandomService(); var supportedHttpStatuses = new[] { 429, 503 }; // to run test faster service.ExecuteQueryDelayInMilliseconds = 1; service.CustomExecuteQueryHandler += (cnt) => { currentReconnectCount++; var webResponce = Activator.CreateInstance<HttpWebResponse>(); var sttausCode = rndService.RandomFromArray(supportedHttpStatuses); SetStatusCode(webResponce, sttausCode); var ex = new WebException("Can't connect to O365", null, (WebExceptionStatus)402, webResponce); throw ex; }; try { service.ExecuteQuery(default(ClientRuntimeContext)); } catch (Exception e) { Assert.AreEqual(currentReconnectCount, service.ExecuteQueryRetryAttempts); Assert.IsTrue(e is SPMeta2Exception); } }
static ClientRuntimeContextExtensions() { DefaultClientRuntimeContextService = new DefaultClientRuntimeContextService(); DefaultTraceServiceBase = new TraceSourceService(); }