public void ProcessMessage_BulkQueryMultipleReturn_Success() { IProcessMessageStrategy strategy = CreateMySqlProcessStrategyWithMocks(new Mocks.MockDBConnection(new MockMySqlSuccessBehaviour())); ProtocolRequest request = new ProtocolRequest { Action = "SampleCall", Destination = "MYSQL", IsBulkQuery = true, IPAddress = "127.0.0.1", Type = Newtonsoft.Json.Linq.JTokenType.Object, Data = "[{'Param1':1},{'Param2':2}]" }; ProtocolResponse response = strategy.Process(request); Assert.That(response.Result == true); Assert.That(response.Error == ""); Assert.That(response.Action == "SampleCall"); Assert.That(response.Data.Count == 2, "BulkQuery should return multiple rows of data", null); Assert.That((int)response.Data[0][0] == 1); Assert.That((bool)response.Data[0][1] == true); Assert.That((string)response.Data[0][2] == "string1"); Assert.That((double)response.Data[0][3] == 12.25); Assert.That((int)response.Data[1][0] == 1); }
public void ProcessMessage_SampleCallException_Success() { IProcessMessageStrategy strategy = CreateMySqlProcessStrategyWithMocks(new Mocks.MockDBConnection(new MockMySqlThrowExceptionBehaviour())); ProtocolResponse response = strategy.Process(CreateMockProtocolRequest("SampleCall", "{'Param1':'Test','Param2':'Hello World <p></p>'}")); Assert.That(response.Result == false); Assert.That(response.Error == ("Error executing query against MySQL (Action: SampleCall) - A sample exception has occurred")); Assert.That(response.Action == "SampleCall"); Assert.That(response.Data.Count == 0); }
public void ProcessMessage_GetServerWithHTMLDescription_Success() { IProcessMessageStrategy strategy = CreateMySqlProcessStrategyWithMocks(new Mocks.MockDBConnection()); ProtocolResponse response = strategy.Process(CreateMockProtocolRequest("GetOrAddServer", "{'ServerName':'Dev Kaukasus Insurgency Server','Version':'6A257BB3-A5EA-4FF7-81D9-B56228BAF1BD','Description':'Hello World <p></p>'}")); Assert.That(response.Result == true); Assert.That(response.Error == ""); Assert.That(response.Action == "GetOrAddServer"); Assert.That((int)response.Data[0][0] == 1); }
public void ProcessMessage_GetServerNoVersion_Success() { IProcessMessageStrategy strategy = CreateMySqlProcessStrategyWithMocks(new Mocks.MockDBConnection()); ProtocolResponse response = strategy.Process(CreateMockProtocolRequest("GetOrAddServer", "{'ServerName':'Dev Kaukasus Insurgency Server'}")); Assert.That(response.Result == false); Assert.That(response.Error == "Version mismatch - you are running an older version of KI - the latest version is [0.90] - Please update to the latest version"); Assert.That(response.Action == "GetOrAddServer"); Assert.That(response.Data.Count == 0); }
public void ProcessMessage_ConnectionOpenCalledTwice_Success() { IDbConnection conn = new Mocks.MockDBConnection(); IProcessMessageStrategy strategy = CreateMySqlProcessStrategyWithMocks(conn); // call twice strategy.Process(CreateMockProtocolRequest("SampleCall", "{'Param1':'Test','Param2':'Hello World <p></p>'}")); strategy.Process(CreateMockProtocolRequest("SampleCall2", "{'Param1':'Test','Param2':'Hello World <p></p>'}")); Assert.That(((Mocks.MockDBConnection)(conn)).OpenCalled == 2); }
void IIPCCallback.OnReceive(object sender, IPCReceivedEventArgs e) { try { Logger.Log("Client Sent: " + e.data); Console.WriteLine("Received data from client (" + ((SocketClient)(sender)).Address + ")"); dynamic j = Newtonsoft.Json.JsonConvert.DeserializeObject(e.data); // Verify the request format is valid if (j["Action"] != null && j["BulkQuery"] != null && j["Data"] != null && j["Destination"] != null) { string action = j["Action"]; // Simply ignore/drop the request if we need to throttle the connection if (!Throttler.ShouldThrottle(action)) { // if we have broken connections, send error and return if (!CheckRedisConnection() || !CheckDBConnection()) { string jsonResponse = "{ \"Action\" : " + j["Action"] + ", \"Result\" : false, \"Error\" : \"Could not connect to Services\", \"Data\" : null }"; ((SocketClient)(sender)).Write(jsonResponse); return; } ProtocolRequest request = Utility.CreateRequest(ref j, ((SocketClient)(sender)).Address); IProcessMessageStrategy processor = ProcessMessageStrategyFactory.Create(GlobalConfig.GetConfig(), Logger, ProcessMessageStrategyFactory.GetSource(request.Destination), RedisConnection, DBConnection); ProtocolResponse resp = processor.Process(request); string jsonResp = JsonConvert.SerializeObject(resp); ((SocketClient)(sender)).Write(jsonResp); } else { Logger.Log("Too many requests - throttling request"); } } else { // send malformed request response string jsonResponse = "{ \"Action\" : " + j["Action"] + ", \"Result\" : false, \"Error\" : \"Malformed Request Received\", \"Data\" : null }"; ((SocketClient)(sender)).Write(jsonResponse); } } catch (Exception ex) { Console.WriteLine("Exception encountered during OnReceived handler: " + ex.Message); Logger.Log("Exception encountered during OnReceived handler: " + ex.Message); string jsonResponse = "{ \"Action\" : \"UNKNOWN\", \"Result\" : false, \"Error\" : \"Malformed JSON Request Received\", \"Data\" : null }"; ((SocketClient)(sender)).Write(jsonResponse); } }
public void ProcessMessage_EmptyData_Success() { IProcessMessageStrategy strategy = CreateMySqlProcessStrategyWithMocks(new Mocks.MockDBConnection()); ProtocolRequest request = new ProtocolRequest { Action = "SampleCall", Destination = "MYSQL", IsBulkQuery = false, IPAddress = "127.0.0.1", Type = Newtonsoft.Json.Linq.JTokenType.Object, Data = "{}" }; ProtocolResponse response = strategy.Process(request); Assert.That(response.Result == true); Assert.That(response.Error == ""); Assert.That(response.Action == "SampleCall"); Assert.That((int)response.Data[0][0] == 1); }
public void ProcessMessage_BulkQueryException_Success() { IProcessMessageStrategy strategy = CreateMySqlProcessStrategyWithMocks(new Mocks.MockDBConnection(new MockMySqlBulkQueryExceptionBehaviour())); ProtocolRequest request = new ProtocolRequest { Action = "SampleCall", Destination = "MYSQL", IsBulkQuery = true, IPAddress = "127.0.0.1", Type = Newtonsoft.Json.Linq.JTokenType.Object, Data = "[{'Param1':1},{'Param2':2}]" }; ProtocolResponse response = strategy.Process(request); Assert.That(response.Result == false); Assert.That(response.Error == "Error executing query against MySQL (Action: " + request.Action + ") - A sample bulk query exception has occurred"); Assert.That(response.Action == "SampleCall"); Assert.That(response.Data.Count == 1); }