You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							68 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							68 lines
						
					
					
						
							1.7 KiB
						
					
					
				
								package testutil
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"os"
							 | 
						|
									"testing"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								// DockerEnvironment provides utilities for Docker-based integration tests
							 | 
						|
								type DockerEnvironment struct {
							 | 
						|
									KafkaBootstrap string
							 | 
						|
									KafkaGateway   string
							 | 
						|
									SchemaRegistry string
							 | 
						|
									Available      bool
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// NewDockerEnvironment creates a new Docker environment helper
							 | 
						|
								func NewDockerEnvironment(t *testing.T) *DockerEnvironment {
							 | 
						|
									t.Helper()
							 | 
						|
								
							 | 
						|
									env := &DockerEnvironment{
							 | 
						|
										KafkaBootstrap: os.Getenv("KAFKA_BOOTSTRAP_SERVERS"),
							 | 
						|
										KafkaGateway:   os.Getenv("KAFKA_GATEWAY_URL"),
							 | 
						|
										SchemaRegistry: os.Getenv("SCHEMA_REGISTRY_URL"),
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									env.Available = env.KafkaBootstrap != ""
							 | 
						|
								
							 | 
						|
									if env.Available {
							 | 
						|
										t.Logf("Docker environment detected:")
							 | 
						|
										t.Logf("  Kafka Bootstrap: %s", env.KafkaBootstrap)
							 | 
						|
										t.Logf("  Kafka Gateway: %s", env.KafkaGateway)
							 | 
						|
										t.Logf("  Schema Registry: %s", env.SchemaRegistry)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									return env
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// SkipIfNotAvailable skips the test if Docker environment is not available
							 | 
						|
								func (d *DockerEnvironment) SkipIfNotAvailable(t *testing.T) {
							 | 
						|
									t.Helper()
							 | 
						|
									if !d.Available {
							 | 
						|
										t.Skip("Skipping Docker integration test - set KAFKA_BOOTSTRAP_SERVERS to run")
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// RequireKafka ensures Kafka is available or skips the test
							 | 
						|
								func (d *DockerEnvironment) RequireKafka(t *testing.T) {
							 | 
						|
									t.Helper()
							 | 
						|
									if d.KafkaBootstrap == "" {
							 | 
						|
										t.Skip("Kafka bootstrap servers not available")
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// RequireGateway ensures Kafka Gateway is available or skips the test
							 | 
						|
								func (d *DockerEnvironment) RequireGateway(t *testing.T) {
							 | 
						|
									t.Helper()
							 | 
						|
									if d.KafkaGateway == "" {
							 | 
						|
										t.Skip("Kafka Gateway not available")
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// RequireSchemaRegistry ensures Schema Registry is available or skips the test
							 | 
						|
								func (d *DockerEnvironment) RequireSchemaRegistry(t *testing.T) {
							 | 
						|
									t.Helper()
							 | 
						|
									if d.SchemaRegistry == "" {
							 | 
						|
										t.Skip("Schema Registry not available")
							 | 
						|
									}
							 | 
						|
								}
							 |