Skip to content

Architecture#

[!NOTE] This section is coming soon. All contributions are welcome, just submit a pull request!

Build Process#

Testcontainers Native Build Process

Stage 1. Testcontainers for C Bridge library#

The core testcontainers-bridge shared library is built with Cgo. For that the -buildmode=c-shared is used in the Golang builder, and it also receives a customized header so that the types can be mapped between C and Golang. We also have to flatten the structure and to switch the reference-based build process to fixed Objects stored in the Golang namespace, and C API using unique object IDs.

Stage 2. Testcontainers for C shared library#

As Cgo cannot produce fancy headers and structure, we have a manually created header file that wraps core functionality of tescontainers-bridge. This provides a static library and header files that can be used natively in C/C++ development, or by language bindings.

Stage 3. Language Bindings#

Then, we build custom binding libraries, by using Testcontainers for C as a static library that is bundled into the language specific libs. This stage depends on the language and common practices there.

Stage 4. Executable Code#

Well, you build it. From the previous stages, you get a header file, binding libraries, a shared library object or a DLL file from the Testcontainers for C module. Then, you know the drill.