this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 173 lines 4.0 kB view raw
1import { Httpx } from "https://jslib.k6.io/httpx/0.1.0/index.js"; 2import exec from "k6/execution"; 3 4const initialToken = "123"; 5export const token = __ENV.TOKEN ?? initialToken; 6 7const paymentProcessorDefaultHttp = new Httpx({ 8 baseURL: "http://localhost:8001", 9 headers: { 10 "Content-Type": "application/json", 11 "X-Rinha-Token": token, 12 }, 13 timeout: 1500, 14}); 15 16const paymentProcessorFallbacktHttp = new Httpx({ 17 baseURL: "http://localhost:8002", 18 headers: { 19 "Content-Type": "application/json", 20 "X-Rinha-Token": token, 21 }, 22 timeout: 1500, 23}); 24 25const backendHttp = new Httpx({ 26 baseURL: "http://localhost:9999", 27 //baseURL: "http://localhost:5123", 28 headers: { 29 "Content-Type": "application/json", 30 }, 31 timeout: 1500, 32}); 33 34const paymentProcessorHttp = { 35 default: paymentProcessorDefaultHttp, 36 fallback: paymentProcessorFallbacktHttp, 37}; 38 39export async function setPPToken(service, token) { 40 const httpClient = paymentProcessorHttp[service]; 41 const params = { headers: { "X-Rinha-Token": initialToken } }; 42 43 const payload = JSON.stringify({ 44 token: token, 45 }); 46 47 const response = await httpClient.asyncPut( 48 "/admin/configurations/token", 49 payload, 50 params, 51 ); 52 53 if (response.status != 204) { 54 exec.test.abort( 55 `Erro ao definir token para ${service} (HTTP ${response.status}).`, 56 ); 57 } 58} 59 60export async function setPPDelay(service, ms) { 61 const httpClient = paymentProcessorHttp[service]; 62 63 const payload = JSON.stringify({ 64 delay: ms, 65 }); 66 67 const response = await httpClient.asyncPut( 68 "/admin/configurations/delay", 69 payload, 70 ); 71 72 if (response.status != 200) { 73 exec.test.abort( 74 `Erro ao definir delay para ${service} (HTTP ${response.status}).`, 75 ); 76 } 77} 78 79export async function setPPFailure(service, failure) { 80 const httpClient = paymentProcessorHttp[service]; 81 82 const payload = JSON.stringify({ 83 failure: failure, 84 }); 85 86 const response = await httpClient.asyncPut( 87 "/admin/configurations/failure", 88 payload, 89 ); 90 91 if (response.status != 200) { 92 exec.test.abort( 93 `Erro ao definir failure para ${service} (HTTP ${response.status}).`, 94 ); 95 } 96} 97 98export async function resetPPDatabase(service) { 99 const httpClient = paymentProcessorHttp[service]; 100 const response = await httpClient.asyncPost("/admin/purge-payments"); 101 102 if (response.status != 200) { 103 exec.test.abort( 104 `Erro ao resetar database para ${service} (HTTP ${response.status}).`, 105 ); 106 } 107} 108 109export async function getPPPaymentsSummary(service, from, to) { 110 const httpClient = paymentProcessorHttp[service]; 111 const response = await httpClient.asyncGet( 112 `/admin/payments-summary?from=${from}&to=${to}`, 113 ); 114 115 if (response.status == 200) { 116 return JSON.parse(response.body); 117 } 118 119 console.error( 120 `Não foi possível obter resposta de '/admin/payments-summary?from=${from}&to=${to}' para ${service} (HTTP ${response.status})`, 121 ); 122 123 return { 124 totalAmount: 0, 125 totalRequests: 0, 126 feePerTransaction: 0, 127 totalFee: 0, 128 }; 129} 130 131export async function resetBackendDatabase() { 132 try { 133 await backendHttp.asyncPost("/purge-payments"); 134 } catch (error) { 135 console.info( 136 "Seu backend provavelmente não possui um endpoint para resetar o banco. Isso não é um problem.", 137 error.message, 138 ); 139 } 140} 141 142export async function getBackendPaymentsSummary(from, to) { 143 const response = await backendHttp.asyncGet( 144 `/payments-summary?from=${from}&to=${to}`, 145 ); 146 147 if (response.status == 200) { 148 return JSON.parse(response.body); 149 } 150 151 console.error( 152 `Não foi possível obter resposta de '/payments-summary?from=${from}&to=${to}' para o backend (HTTP ${response.status})`, 153 ); 154 155 return { 156 default: { 157 totalAmount: 0, 158 totalRequests: 0, 159 }, 160 fallback: { 161 totalAmount: 0, 162 totalRequests: 0, 163 }, 164 }; 165} 166 167export async function requestBackendPayment(payload) { 168 const response = await backendHttp.asyncPost( 169 "/payments", 170 JSON.stringify(payload), 171 ); 172 return response; 173}