private static HttpMessageState ConfigureSendFaultyOrderState(HttpMessageState s, Log log, Random rng, string endPoint, string user) { var orderMessage = new FaultyOrderMessage().Randomize(rng); s.Name = user + ", HttpMessageState::sendFaultyOrder"; s.Uri = endPoint + "/post-order"; s.Message = orderMessage; s.SetupMessage = (msg) => { orderMessage.token = s.Context.Resolve <string>(UserTokenId); orderMessage.Randomize(s.Context.Resolve <Random>()); log?.Put(OutputLevel.Info, s.Name, "sending faulty order."); }; s.ProcessResponse = (response) => { if (response.IsSuccessStatusCode) { LogError(log, s.Context, s.Name + " send wrong ok which somehow was a success"); } else { log?.Put(OutputLevel.Info, s.Name, "received expected error."); } }; s.SendMethod = RestMethod.POST; return(s); }
private static HttpMessageState ConfigureLogoutState(HttpMessageState s, Log log, string endPoint, string user) { var logoutMessage = new LogoutMessage(); s.Name = user + ", HttpMessageState::logout"; s.Uri = endPoint + "/logout"; s.Message = logoutMessage; s.SetupMessage = (msg) => { logoutMessage.token = s.Context.Resolve <string>(UserTokenId); log?.Put(OutputLevel.Info, s.Name, "logging out" + user + "."); }; s.ProcessResponse = (response) => { if (response.IsSuccessStatusCode) { s.Context.Remove(UserTokenId); } else { LogError(log, s.Context, s.Name + " tried to log out, received error code." + " - " + response.ReasonPhrase); } }; s.SendMethod = RestMethod.POST; return(s); }
private static HttpMessageState ConfigureGetUserOrdersMessage( HttpMessageState s, Log log, string endPoint, int userCount, Random rng, string adminName = "admin", string password = "******") { var getOrdersMessage = new GetUserOrdersMessage() { userId = rng.Next(1, userCount), adminName = adminName, password = password, }; s.Name = userCount + ", HttpMessageState::getUserOrders"; s.Uri = endPoint + "/get-user-orders"; s.Message = getOrdersMessage; s.SetupMessage = (msg) => { getOrdersMessage.userId = rng.Next(1, userCount); log?.Put(OutputLevel.Info, s.Name, "requesting orders of user " + getOrdersMessage.userId); }; s.ProcessResponse = async(response) => { if (response.IsSuccessStatusCode) { var message = await response.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(message)) { var serverResponse = JsonSerializer.Deserialize <OrderMessageResponse[]>(message); log?.Put(OutputLevel.Info, "For userId " + getOrdersMessage.userId + " received orders " + message); } else { LogError(log, s.Context, s.Name + " no orders received for user " + getOrdersMessage.userId + " - " + response.ReasonPhrase); } } else { LogError(log, s.Context, s.Name + " error requesting user orders for user " + getOrdersMessage.userId + " - " + response.ReasonPhrase); } }; s.SendMethod = RestMethod.POST; return(s); }
private static HttpMessageState ConfigureSendOrderState(HttpMessageState s, Log log, Random rng, string endPoint, string user) { var orderMessage = OrderMessage.GenerateRandomMessage("-1", rng); s.Name = user + ", HttpMessageState::sendOrder"; s.Uri = endPoint + "/post-order"; s.Message = orderMessage; s.SetupMessage = (msg) => { orderMessage.token = s.Context.Resolve <string>(UserTokenId); orderMessage.Randomize(s.Context.Resolve <Random>()); s.Context.Register(MessageCountId, s.Context.Resolve <int>(MessageCountId) + 1); log?.Put(OutputLevel.Info, s.Name, "sending order with " + orderMessage.items.Length + " items."); }; s.ProcessResponse = async(response) => { if (response.IsSuccessStatusCode) { var message = await response.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(message)) { var serverResponse = JsonSerializer.Deserialize <ServerResponse>(message); s.Context.Register(AckCountId, s.Context.Resolve <int>(AckCountId) + 1); /*if (serverResponse.timeStamp == orderMessage.timeStamp) * { * s.Context.Register(AckCountId, s.Context.Resolve<int>(AckCountId) + 1); * }*/ } else { LogError(log, s.Context, s.Name + " send order received no ack"); } } else { LogError(log, s.Context, s.Name + " send order with " + orderMessage.items.Length + " items, received error code." + " - " + response.ReasonPhrase); } }; s.SendMethod = RestMethod.POST; return(s); }
private static HttpMessageState ConfigureHeartbeatMessage(HttpMessageState s, Log log, string endPoint, string user) { var heartbeatMessage = new HeartbeatMessage(); s.Name = user + ", HttpMessageState::heartbeat"; s.Uri = endPoint + "/heartbeat"; s.Message = heartbeatMessage; s.SetupMessage = (msg) => { heartbeatMessage.token = s.Context.Resolve <string>(UserTokenId); heartbeatMessage.timeStamp += 1; s.Context.Register(MessageCountId, s.Context.Resolve <int>(MessageCountId) + 1); log?.Put(OutputLevel.Info, s.Name, "sending heartbeat."); }; s.ProcessResponse = async(response) => { if (response.IsSuccessStatusCode) { var message = await response.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(message)) { var serverResponse = JsonSerializer.Deserialize <ServerResponse>(message); s.Context.Register(AckCountId, s.Context.Resolve <int>(AckCountId) + 1); /*if (serverResponse.timeStamp == heartbeatMessage.timeStamp) * { * s.Context.Register(AckCountId, s.Context.Resolve<int>(AckCountId) + 1); * }*/ } else { LogError(log, s.Context, s.Name + " send heartbeat, received no ack"); } } else { LogError(log, s.Context, s.Name + " send heartbeat, received error code." + " - " + response.ReasonPhrase); } }; s.SendMethod = RestMethod.POST; return(s); }
private static HttpMessageState ConfigureLoginState(HttpMessageState s, Log log, string endPoint, string user, string password) { s.Name = user + ", HttpMessageState::login"; s.Uri = endPoint + "/login"; s.Message = new LoginMessage() { user = user, password = password, }; s.SetupMessage = (msg) => log?.Put(OutputLevel.Info, s.Name, "logging in user " + ((LoginMessage)s.Message).user); s.ProcessResponse = async(response) => { if (response.IsSuccessStatusCode) { var message = await response.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(message)) { var loginResponse = JsonSerializer.Deserialize <LoginResponse>(message); log?.Put(OutputLevel.Info, s.Name, " received token " + loginResponse.token); s.Context.Register(UserTokenId, loginResponse.token); } else { LogError(log, s.Context, s.Name + " response missed token."); } } else { LogError(log, s.Context, s.Name + " failed login " + response.ReasonPhrase); } }; s.SendMethod = RestMethod.POST; return(s); }
private static HttpMessageState ConfigurewrongLoginState(HttpMessageState s, Log log, string endPoint, string user, string password) { s.Name = user + ", HttpMessageState::wrongLogin"; s.Uri = endPoint + "/login"; s.Message = new LoginMessage() { user = user, password = password, }; s.SetupMessage = (msg) => log?.Put(OutputLevel.Info, s.Name, "logging in user with faulty password" + ((LoginMessage)s.Message).user); s.ProcessResponse = (response) => { if (response.IsSuccessStatusCode) { LogError(log, s.Context, s.Name + " somehow the login was correct using " + user + "/" + password); } else { log?.Put(OutputLevel.Info, s.Name, " got expected response (ie password does not exist) :) "); } }; s.SendMethod = RestMethod.POST; return(s); }