Skip to content

Instantly share code, notes, and snippets.

View rafaelpontezup's full-sized avatar

Rafael Ponte rafaelpontezup

View GitHub Profile
@rafaelpontezup
rafaelpontezup / skt-command.sh
Created September 26, 2023 20:05
StackSpot: Showing the current status of the deploy
View skt-command.sh
# we can generate the report as "json" or "md" (markdown)
stk deploy status <execution_id> --report json
@rafaelpontezup
rafaelpontezup / perguntas-sobre-testes-de-carga-e-estresse.md
Created May 18, 2023 13:51
Perguntas sobre testes de carga e estresse
View perguntas-sobre-testes-de-carga-e-estresse.md

Perf

1. Explique o conceito de teste de carga e estresse?

Teste carga signigica verificar como uma aplicação ou sistema se comporta sob uma determinada carga de trabalho (workload) esperada, que pode ser uma carga pequena, moderada ou grande. Além disso, essa carga é aplicada durante algum intervalo de tempo, como minutos ou horas, para validar a estabilidade do sistema e detectar possíveis problemas no uso de recursos, como memória, CPU, disco ou conexões com um banco de dados por exemplo. É importante entender que um teste de carga não ultrapassa a capacidade esperada ou projetada para uma aplicação ou sistema.

Enquanto teste de estresse está relacionado a verificar como uma aplicação ou sistema se comporta quando aplicamos uma carga de trabalho (workload) muito alta e intensa, geralmente uma carga superior a esperada ou especificada nos requisitos. A ideia aqui é submeter a aplicação além da sua capacidade projetada a fim de detectar problemas ou gargalos no uso de recursos ou componentes internos. O

@rafaelpontezup
rafaelpontezup / races-conditions.md
Created October 31, 2022 17:01
Chapter Stackspot: Race conditions, locking e bancos de dados relacionais
View races-conditions.md

Race conditions, locking e bancos de dados relacionais

Pretendo apresentar um código com uma lógica de negócio simples que funciona bem na perspectiva do negócio mas que quebra miseravelmente em ambientes minimamente concorrentes. Para isso, vou demonstrar através de testes de integração como identificar o Race Condition no código e principalmente como resolvê-lo através de mecanismos de locking e Isolation Level do seu banco de dados;

O que vamos discutir

  1. Por que estudamos esse assunto mais a fundo?
  • 1.3. A importância do treino: o que eu levei alguns bons anos para aprender o Jordi levou 6 meses
@rafaelpontezup
rafaelpontezup / LockManager.kt
Created October 4, 2022 20:25 — forked from soudmaijer/LockManager.kt
Postgres transaction-level advisory lock implementation that uses Spring JDBC
View LockManager.kt
import org.slf4j.LoggerFactory
import org.springframework.jdbc.core.JdbcTemplate
import org.springframework.stereotype.Component
import org.springframework.transaction.annotation.Propagation
import org.springframework.transaction.annotation.Transactional
import java.time.Duration
interface LockManager {
fun <T> tryWithLock(key: Long, timeout: Duration, function: () -> T): T
}
@rafaelpontezup
rafaelpontezup / plugin.yaml
Last active August 29, 2022 13:42
Stackspot: playing with edit-xml
View plugin.yaml
hooks:
- type: edit-xml
trigger: after-render
path: pom.xml
encoding: UTF-8
namespaces:
- name: ns
value: "http://maven.apache.org/POM/4.0.0"
- name: xsi
value: "http://www.w3.org/2001/XMLSchema-instance"
@rafaelpontezup
rafaelpontezup / NewAuthorController.java
Last active August 19, 2022 22:38
Example of Spring Boot REST Controller using SpringDoc OpenAPI
View NewAuthorController.java
package br.com.zup.edu.app10.samples.authors;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.headers.Header;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.ExampleObject;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import org.slf4j.Logger;
@rafaelpontezup
rafaelpontezup / pre-req.js
Created May 3, 2022 13:36 — forked from faermanj/pre-req.js
Postman OIDC
View pre-req.js
var auth_username = pm.variables.get("auth_username")
var auth_password = pm.variables.get("auth_password")
var client_id = pm.variables.get("client_id")
var client_secret = pm.variables.get("client_secret")
var authBody = `username=${auth_username}&password=${auth_password}&grant_type=password&client_id=${client_id}&client_secret=${client_secret}`;
console.log(authBody)
var force_refresh = true
var token_expires_in = pm.environment.get("token_expires_in");
var token_created = pm.environment.get("token_created");
@rafaelpontezup
rafaelpontezup / sprint-1-troubleshooting.md
Last active September 6, 2021 17:09
Sprints: construindo treinamento de troubleshooting
View sprint-1-troubleshooting.md
@rafaelpontezup
rafaelpontezup / bean-validation.kt
Created July 13, 2021 14:24
Bean Validation: entendendo como funciona
View bean-validation.kt
// Bean Validations = spec = PDF -> Hibernate-Validator -> JAR
@Intropected
data class ProdutoRequest(
@field:NotNull val codigo: Int, // obrigatorio
@field:NotBlank @field:Size(max=42) val nome: String // obrigatorio e tamanho maximo de 42
)
@rafaelpontezup
rafaelpontezup / desafio-pix-testes-de-integracao-abordagens.md
Created March 17, 2021 21:21
Desafio Pix: abordagens nos testes de integração
View desafio-pix-testes-de-integracao-abordagens.md

Para escrever os testes de integração dos endpoints gRPC eu tive basicamente que levantar o contexto do Micronaut (com @MicronautTest) juntamente com um banco H2 em vez do PostgreSQL pois meu schema é MUITO simples e não valeria o custo de levantar um PostgreSQL via TestContainers. Por haver muita integração com os serviços satélites ITAU-ERP e BCB, eu mockei ambos.

No fim, eu segui duas abordagem na hora de escrever os cenários de testes:

  1. Para o endpoint RegistraChaveEndpoint, eu adentrei sua classe Service para extrair os cenários de testes, ou seja, todos os cenários foram concebidos a partir das classes de Endpoint + Service. No fim, escrevi uma única classe com todos os testes: [RegistraChaveEndpointTest](https://github.com/zup-academy/orange-stack-pix-keymanager-grpc/blob/master/src/test/kotlin/br/com/zup/edu/pix/registra/RegistraChaveEndpoin