testcontainers / testcontainers/testcontainers-java

Enrich JdbcDatabaseContainer InitScript functionality to be able to read from a folder and not only a single file

Aperta
#3,894 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Java
Stelle
8.7k
Fork
1.9k
Merge medio
2g 17h
PR unite (30g)
9

Descrizione

We have a particular use case in our company, we need to test create scripts and also update scripts, apart from Liquibase, initScript is nice but I would like to execute multiple scripts in a particular order like we can do in MySQL Docker with

    volumes:
      - "./scripts/schema.sql:/docker-entrypoint-initdb.d/1.sql"
      - "./scripts/data.sql:/docker-entrypoint-initdb.d/2.sql"
      - "./scripts/update.sql:/docker-entrypoint-initdb.d/3.sql"

We have it now working with

    var containerDelegate = new JdbcDatabaseDelegate(postgreSQLContainer, "");
     ScriptUtils.runInitScript(containerDelegate, "some/location/on/classpath/1.sql");
     ScriptUtils.runInitScript(containerDelegate, "some/location/on/classpath/2,sql");
     ScriptUtils.runInitScript(containerDelegate, "ssome/location/on/classpath/3.sql");

But it would be a nice addition if we allow InitScript point to a folder instead of a file, so both:

jdbc:tc:mysql:5.7.22:///databasename?TC_INITSCRIPT=somepath/init_mysql.sql

jdbc:tc:mysql:5.7.22:///databasename?TC_INITSCRIPT=somepath/somefolder

Work properly. This is useful if you have a set of SQL migration scripts, in that case all the *.sql files under that directory will be executed one by one in order. To specify the order the format expected is [0-9]-name.sql

    ├── somefolder
    │   └── 01-create.sql 
    │   └── 02-data.sql   

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia tracciando la gestione di init-script di JdbcDatabaseContainer e il punto di ingresso JdbcDatabaseContainer, incluso l’utilizzo di JdbcDatabaseDelegate mostrato nell’issue. Verifica come viene risolto il valore di TC_INITSCRIPT, quindi definisci il completamento in modo da mantenere l’esecuzione di un singolo file, accettando al contempo una cartella ed eseguendo i relativi file *.sql nell’ordine numerico specificato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
docker, java, sql
Ambito
databases, testing
Tipo di issue
Funzionalità
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.