public static int Main(string[] args) { try { // **DESTINATION** // Create watcher and completionHandler ManagementOperationWatcher delete_res = new ManagementOperationWatcher(); ManagementOperationWatcher results = new ManagementOperationWatcher(); CompletionHandler completionHandler = new CompletionHandler(); CompletionHandler completionHandler_res = new CompletionHandler(); delete_res.Completed += new CompletedEventHandler(completionHandler_res.Done); results.Completed += new CompletedEventHandler(completionHandler.Done); PutHandler putHandler = new PutHandler(); results.ObjectPut += new ObjectPutEventHandler(putHandler.JustPut); // Create the class TestDelClassasync for deletion later // **SOURCE ** ManagementClass newclassObj = new ManagementClass("root/default", "", null); newclassObj.SystemProperties["__CLASS"].Value = "TestDelClassasync"; PropertySet mykeyprop = newclassObj.Properties; mykeyprop.Add("MyKey", "Hello"); Console.WriteLine("Thread is {0}", System.Threading.Thread.CurrentThread.ApartmentState); newclassObj.Put(results); while (!completionHandler.IsComplete) { System.Threading.Thread.Sleep(1000); } completionHandler.Reset(); ManagementClass dummyClassCheck = new ManagementClass("root/default", "TestDelClassasync", null); //dummyClassCheck.Get(); Console.WriteLine(dummyClassCheck.SystemProperties["__Class"].Value.ToString()); // Delete the Class aync newclassObj.Delete(delete_res); while (!completionHandler_res.IsComplete) { System.Threading.Thread.Sleep(1000); } completionHandler_res.Reset(); if ("System.Management.ManagementOperationWatcher" == completionHandler_res.Sender) { Console.WriteLine("Test 10.2: Able to delete classes asynchronously."); } else { Console.WriteLine("Test 10.2: Unable to delete classes asynchronously."); } } catch (Exception e) { Console.WriteLine("Test 10.2: " + e.GetType().ToString()); Console.WriteLine(e.Message + e.StackTrace); } return(0); }
public void Check_If_Updated_Name_Already_Exists() { var putHandler = new PutHandler("../../../../TestFrameworklessApp/UnitTests/PutHandlerDatabaseTest.json"); var exception = Assert.Throws <ArgumentException>(() => putHandler.UpdateUserName("3", "Bob")); Assert.Equal("User already exists", exception.Message); }
public void Update_Non_Existing_User() { var putHandler = new PutHandler("../../../../TestFrameworklessApp/UnitTests/PutHandlerDatabaseTest.json"); var exception = Assert.Throws <ArgumentException>(() => putHandler.UpdateUserName("8", "Alex")); Assert.Equal("User doesn't exist", exception.Message); }
public void Update_Existing_User_Name_Given_Id() { var putHandler = new PutHandler("../../../../TestFrameworklessApp/UnitTests/PutHandlerDatabaseTest.json"); var result = putHandler.UpdateUserName("2", "Alicia"); putHandler.UpdateUserName("2", "Sally"); Assert.True(result); }
void HandlePut(RequestContext request) { ResponseHandler.Status201(Writer); string message = ReadContent(); request.addMessage(message); PutHandler.HandleByCommand(request); //messageList.RemoveAt(position - 1); //messageList.Insert(position - 1, request); }
public static IHandler Build() { var okHandler = new OkHandler(); var putHandler = new PutHandler(); var notFoundHandler = new NotFoundHandler(putHandler); var methodIsSupportedHandler = new MethodIsSupportedHandler(okHandler); var resourceExistsHandler = new ResourceExistsHandler(methodIsSupportedHandler, notFoundHandler); var endpointExistsHandler = new EndpointExistsHandler(resourceExistsHandler); var optionsHandler = new OptionsHandler(endpointExistsHandler); var authorizationHandler = new AuthorizationHandler(optionsHandler); var authenticationHandler = new AuthenticationHandler(authorizationHandler); return authenticationHandler; }
private void HandleConnection(Socket sock) { NetworkStream stream = new NetworkStream(sock); string line = null; bool error = false; bool keepAlive = false; DateTime startTime = DateTime.Now; sock.ReceiveTimeout = RequestHandler.Timeout * 100; sock.Blocking = false; sock.NoDelay = true; sock.SendBufferSize = 16 * 1024; sock.UseOnlyOverlappedIO = true; string type = ""; string path = ""; do { bool first = true; RequestHandler handler = null; do { line = null; try { line = ReadLine(stream); BytesReadHeader += line.Length + 2; } catch (ThreadAbortException e) { keepAlive = false; error = true; break; } catch (IOException e) { keepAlive = false; error = true; break; } catch (Exception e) { keepAlive = false; error = true; break; } /* connection timed out or closed */ if (line == null) { sock.Close(); LogRequest(" (Socket closed)"); return; } if (first) { LogRequest(" (Connection from " + sock.RemoteEndPoint + ")"); } LogRequest("< " + line); /* not an empty line? */ if (line != "") { /* the first line contains the request */ if (first) { if (line.Contains(' ')) { type = line.Substring(0, line.IndexOf(' ')); path = line.Substring(line.IndexOf(' ')).Trim(); try { switch (type) { case "OPTIONS": handler = new OptionsHandler(this, path); break; case "PROPFIND": handler = new PropFindHandler(this, path); break; case "GET": handler = new GetHandler(this, path); break; case "HEAD": handler = new HeadHandler(this, path); break; case "PUT": handler = new PutHandler(this, path); break; case "LOCK": handler = new LockHandler(this, path); break; case "UNLOCK": handler = new UnlockHandler(this, path); break; case "DELETE": handler = new DeleteHandler(this, path); break; case "MOVE": handler = new MoveHandler(this, path); break; case "COPY": handler = new CopyHandler(this, path); break; case "MKCOL": handler = new MkColHandler(this, path); break; case "PROPPATCH": handler = new PropPatchHandler(this, path); break; default: handler = new RequestHandler(this, "/"); break; } } catch (IOException e) { Log("[i] Connection from " + sock.RemoteEndPoint + " (" + type + ") had IOException"); } catch (Exception e) { Log("[E] '" + e.GetType().ToString() + "' in connection from " + sock.RemoteEndPoint + " (" + type + ")"); } } first = false; } else { try { handler.AddHeaderLine(line); } catch (IOException e) { /* just close */ sock.Close(); LogRequest(" (Socket closed)"); return; } catch (Exception e) { Log("[E] '" + e.GetType().ToString() + "' in connection from " + sock.RemoteEndPoint + " (AddHeaderLine)"); } //stream.Flush(); } } } while (line != ""); if (handler == null) { Log("[E] Empty request in connection from " + sock.RemoteEndPoint + " (HandleContent/HandleRequest)"); handler.KeepAlive = false; return; } if (!error) { try { if (handler.RequestContentLength > 0) { handler.HandleContent(stream); } handler.HandleRequest(stream); stream.Flush(); } catch (FileNotFoundException e) { Log("[E] 404 '" + e.GetType().ToString() + ": " + e.Message + "' in connection from " + sock.RemoteEndPoint + " (HandleContent/HandleRequest)"); /* respond with error */ handler = new RequestHandler(this, "/"); handler.StatusCode = RequestHandler.GetStatusCode(404); handler.KeepAlive = false; handler.HandleRequest(stream); stream.Flush(); } catch (SocketException e) { Log("[E] '" + e.GetType().ToString() + ": " + e.Message + "' in connection from " + sock.RemoteEndPoint + " (HandleContent/HandleRequest)"); handler.KeepAlive = false; return; } catch (UnauthorizedAccessException e) { Log("[i] 403 '" + e.GetType().ToString() + ": " + e.Message + "' in connection from " + sock.RemoteEndPoint + " (HandleContent/HandleRequest)"); /* respond with error */ handler = new RequestHandler(this, "/"); handler.StatusCode = RequestHandler.GetStatusCode(403); handler.KeepAlive = false; handler.HandleRequest(stream); stream.Flush(); } catch (Exception e) { Log("[E] 500 '" + e.GetType().ToString() + ": " + e.Message + "' in connection from " + sock.RemoteEndPoint + " (HandleContent/HandleRequest)"); /* respond with error */ handler = new RequestHandler(this, "/"); handler.StatusCode = RequestHandler.GetStatusCode(500); handler.KeepAlive = false; handler.HandleRequest(stream); stream.Flush(); } if (EnableRequestLog) { DateTime endTime = DateTime.Now; Log("[i] Connection from " + sock.RemoteEndPoint + " (" + type + " " + path + ") took " + (endTime - startTime).TotalMilliseconds + " ms (" + handler.StatusCode + ")"); } LogRequest(""); lock (StatisticsLock) { BytesWrittenHeader += handler.BytesWrittenHeader; BytesWrittenData += handler.BytesWrittenData; BytesReadHeader += handler.BytesReadHeader; BytesReadData += handler.BytesReadData; } keepAlive = handler.KeepAlive; /* windows isnt really using keepalive :( */ keepAlive = false; } } while (keepAlive); sock.Close(); LogRequest(" (Socket closed)"); }