Abbiamo un protocollo di registrazione che definisce l'output di librerie di registrazione , ad esempio:
- ogni riga dovrebbe essere un JSON
- ogni riga non deve superare 1 MB
Esistono diverse implementazioni di questo protocollo di registrazione, ad es. le librerie di registrazione scritte in lingue diverse (Java, Python, ecc.). Vorrei creare una serie di test che posso eseguire su qualsiasi libreria di registrazione per verificare che sia conforme al protocollo di registrazione. Non voglio che gli autori di una nuova libreria portino il test esistente. Invece, voglio che riutilizzino i test esistenti.
Le soluzioni sono già note a questo tipo Kit di compatibilità dei test reattivi per gli stream , ma lavorano per implementazioni nella stessa lingua (o almeno per le lingue JVM). Nel mio caso le implementazioni possono essere di lingue diverse.
Come posso rendere indipendente la lingua dei test?
Idea iniziale
-
La mia prima idea si basa sul presupposto che le librerie di logging prendano sempre uno o due argomenti:
logging.error("Serious problem occurred", exception)
e registra l'output in un file di registro
{ level: "error", message: "Serious problem occurred", stacktrace: "....."}
-
Il cablaggio di test passerebbe alcune stringhe alla libreria di test e verificherà l'output.
-
Il cablaggio di test comunica con una libreria di logging attraverso una pipeline, quindi l'unica cosa che il creatore della libreria deve fornire è un wrapper per la gestione delle comunicazioni con un'imbracatura di test (tramite pipeline).
C'è un approccio migliore?