Files
golib/config/TESTING.md
nabbar 942068222c 2025-11 Improvement, Tests, Documentations, Bug Fix, Optimization
Global Repos / Workflow
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- UPDATE workflow: split old workflow into multiple files
- UPDATE .gitignore: added cluster.old.tar.gz and build artifacts
- UPDATE .golangci.yml: enhanced linter rules and disabled deprecated linters

[archive]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- FIX extract: recursive decompression for nested archives (e.g., .tar.gz handling)
- FIX extract: ZIP archive support now properly uses ReaderAt interface with seek reset
- ADD extract: proper symlink and hard link handling in archives
- UPDATE tar/writer: improved error handling and file mode preservation
- UPDATE zip/writer: enhanced validation and error messages
- UPDATE compress/interface: added support for additional compression formats
- UPDATE helper/compressor: fixed typo in error handling

[artifact]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE artifact: improved error handling and context management
- UPDATE client/interface: enhanced API with better type safety and context propagation
- UPDATE client/model: refactored for better maintainability
- UPDATE github: removed unused error codes, improved model validation
- UPDATE gitlab: enhanced API pagination and error handling
- UPDATE jfrog: improved artifactory API compatibility
- UPDATE s3aws: enhanced S3 bucket operations and error messages

[atomic]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE cast: improved type conversion with better error handling
- UPDATE interface: enhanced atomic operations with generics support
- UPDATE synmap: fixed race conditions in concurrent access patterns
- UPDATE value: improved atomic value operations with better memory ordering

[aws]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE bucket: enhanced ACL and CORS configuration with validation
- UPDATE configAws/models: improved credential handling and region configuration
- UPDATE configCustom/interface: added support for custom endpoints
- UPDATE http/request: improved retry logic and timeout handling
- UPDATE interface: enhanced AWS client with context propagation
- UPDATE model: refactored for AWS SDK v2 compatibility
- UPDATE multipart/interface: improved chunk handling for large uploads
- UPDATE pusher: optimized hash calculation and upload progress tracking
- UPDATE resolver: enhanced endpoint resolution with custom DNS
- DELETE test files: removed bucket_test.go, group_test.go, object_test.go, policy_test.go, role_test.go, user_test.go

[cache]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- ADD context: context-aware cache lifecycle management
- UPDATE interface: complete rewrite with Go generics for type-safe key-value operations
- ADD item package: generic cache item with expiration tracking (interface and model)
- UPDATE model: refactored to use generics (Cache[K comparable, V any])
- REFACTOR: split item.go into modelAny.go for better code organization

[certificates]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE auth/encode: improved PEM encoding with better error messages
- UPDATE auth/interface: enhanced authentication certificate handling
- UPDATE ca: improved CA certificate generation and validation
- UPDATE certs: enhanced certificate configuration with SAN support
- UPDATE cipher: improved cipher suite selection and validation
- UPDATE curves: enhanced elliptic curve handling with additional curves
- ADD deprecated.go: marked deprecated TLS versions and cipher suites
- UPDATE interface: enhanced certificate interface with context support
- UPDATE model: improved certificate model with better validation
- UPDATE rootca: enhanced root CA pool management
- UPDATE tlsversion: added TLS 1.3 support with proper validation
- UPDATE tools: improved certificate utility functions

[cobra]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE completion: improved shell completion generation (bash, zsh, fish, powershell)
- UPDATE configure: enhanced configuration file handling
- UPDATE printError: improved error formatting with color support
- UPDATE interface: enhanced cobra interface with context support
- UPDATE model: improved cobra model with better validation

[config]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE components: improved component lifecycle management
- UPDATE const/const: improved constant definitions
- UPDATE context: enhanced context handling with better propagation
- UPDATE errors: improved error definitions
- UPDATE events: enhanced event management
- UPDATE manage: improved configuration management with validation
- UPDATE model: refactored config model
- UPDATE shell: enhanced shell integration for interactive configuration
- UPDATE types: improved component and componentList types

[console]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- ADD buff.go: BuffPrintf function for colored output to io.Writer (moved from ioutils/multiplexer)
- DELETE color.go: removed legacy color file (consolidated functionality)
- UPDATE error: improved error definitions with better messages
- ADD interface: console interface for abstraction
- ADD model: console model for state management
- UPDATE padding: enhanced string padding with Unicode support
- UPDATE prompt: improved interactive prompt handling

[context]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- DELETE config.go: removed deprecated configuration (replaced by Config[T] interface)
- UPDATE context: improved context handling with better cancellation support
- UPDATE gin/interface: enhanced Gin context integration with type safety
- ADD helper: context helper functions for common operations
- ADD interface: generic Config[T comparable] interface for type-safe context storage
- ADD map: MapManage[T] interface for concurrent-safe map operations
- ADD model: thread-safe context model implementation with sync.Map

[database]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE gorm/config: improved database configuration
- UPDATE gorm/driver: enhanced database driver with better connection pooling
- UPDATE gorm/driver_darwin: macOS-specific database optimizations
- UPDATE gorm/interface: improved GORM interface with context support
- UPDATE gorm/model: refactored model for better maintainability
- UPDATE gorm/monitor: enhanced monitoring for database connections
- UPDATE kvtypes: improved types for key-value store (compare, driver, item, table)

[duration]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE big: enhanced big.Duration for large time spans with arithmetic operations
- UPDATE encode: improved marshaling for JSON, YAML, TOML, Text, CBOR
- UPDATE format: enhanced human-readable formatting (ns, μs, ms, s, m, h, d, w)
- UPDATE interface: improved duration interface with arithmetic methods
- UPDATE model: refactored Duration type
- UPDATE operation: enhanced arithmetic operations (Add, Sub, Mul, Div)
- UPDATE parse: improved parsing with multiple format support
- UPDATE truncate: enhanced truncation for rounding durations

[encoding]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE aes: improved AES encryption with reader/writer interfaces
- UPDATE hexa: enhanced hexadecimal encoding with better error handling
- UPDATE mux: improved multiplexer/demultiplexer for stream handling
- UPDATE randRead: enhanced random data generation
- UPDATE sha256 package: SHA-256 hashing with reader/writer interfaces

[errors]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- ADD pool package: thread-safe error pool for collecting multiple errors with concurrent access
- UPDATE code: improved error code definition and lookup
- UPDATE errors: enhanced error creation with better stack trace
- UPDATE interface: improved error interface with more methods
- UPDATE mode: enhanced error mode handling (production vs development)
- UPDATE return: improved error return handling with context
- UPDATE trace: enhanced error tracing with file and line information

[file]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE bandwidth: improved bandwidth tracking with concurrency tests
- UPDATE perm: enhanced file permission handling with Unix/Windows support
- UPDATE perm/encode: improved marshaling for JSON, YAML, TOML
- UPDATE perm/format: enhanced permission formatting (e.g., "rwxr-xr-x")
- UPDATE perm/parse: improved parsing of permission strings and octal values
- UPDATE progress: enhanced progress tracking for file I/O operations
- UPDATE progress/io*: improved reader, writer, seeker, closer interfaces with progress callbacks

[ftpclient]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE config: improved FTP configuration with TLS support
- UPDATE errors: enhanced error definitions
- UPDATE interface: improved FTP client interface
- UPDATE model: refactored FTP client model

[httpcli]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE cli: improved HTTP client with retry logic and timeout handling
- UPDATE dns-mapper: enhanced DNS mapping for custom resolution
- UPDATE dns-mapper/config: improved DNS mapper configuration
- UPDATE dns-mapper/errors: enhanced error handling
- UPDATE dns-mapper/interface: improved DNS mapper interface
- UPDATE dns-mapper/transport: enhanced HTTP transport with DNS override
- UPDATE errors: improved error definitions
- UPDATE options: enhanced client options with context support

[httpserver]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE config: improved server configuration with TLS and middleware support
- UPDATE handler: enhanced request handler with better error handling
- UPDATE interface: improved server interface with context support and monitoring integration
- UPDATE model: refactored server model with better validation
- UPDATE monitor: enhanced monitoring integration with status tracking
- UPDATE pool: improved server pool management (config, interface, list, model)
- UPDATE run: enhanced server runtime with graceful shutdown
- UPDATE server: improved core server implementation with better lifecycle
- ADD testhelpers/certs.go: certificate generation utilities for testing
- UPDATE types: improved const, fields, and handler types

[ioutils]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE bufferReadCloser: improved buffered reader/writer with closer
- UPDATE fileDescriptor: enhanced file descriptor limit management (platform-specific for Linux/macOS/Windows)
- UPDATE ioprogress: improved progress tracking for I/O operations
- UPDATE iowrapper: enhanced I/O wrapper with custom interfaces
- UPDATE mapCloser: improved map of closers for resource management
- UPDATE maxstdio: enhanced C implementation for max stdio file descriptor retrieval
- DELETE multiplexer/model.go: removed legacy multiplexer (functionality moved to console/buff.go and retro/)
- UPDATE nopwritecloser: improved no-op write closer
- UPDATE tools: enhanced I/O utility functions

[ldap]
- UPDATE ldap: improved LDAP client with better connection handling and search operations

[logger]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE config: improved default values, file options, and syslog configuration
- UPDATE entry/interface: enhanced log entry with context support
- UPDATE fields: improved field handling with JSON cloning
- UPDATE gorm/interface: enhanced GORM logger with trace ID support
- UPDATE hashicorp/interface: improved HashiCorp logger integration
- FIX hookfile/system: use os.OpenRoot for secure file operations (prevents path traversal)
- FIX hookfile/system: fixed import path from libsrv "golib/server" to "golib/runner"
- ADD hookfile: IsRunning() method to track file hook state
- UPDATE hookstderr/interface: enhanced stderr hook with better buffering
- UPDATE hookstdout/interface: enhanced stdout hook with better buffering
- UPDATE hooksyslog: improved syslog integration with channel and priority handling
- ADD hookwriter package: generic io.Writer hook for custom output destinations
- UPDATE interface: enhanced logger interface with context propagation
- UPDATE level: improved log level handling and comparison
- UPDATE log: enhanced logging with better formatting
- UPDATE manage: improved logger lifecycle management
- UPDATE model: refactored logger model for better maintainability

[mail]
- UPDATE sender: improved mail sender with better MIME handling
- UPDATE interface: enhanced interface with monitoring support
- UPDATE monitor: added monitoring integration for mail operations

[monitor]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- ADD status package: new subpackage for status management with Status type (KO, Warn, OK)
- ADD status/encode: marshaling support for JSON, YAML, TOML, Text, CBOR
- ADD status/format: human-readable status formatting
- ADD status/interface: Status type with Parse and String methods
- UPDATE encode: improved encoding with better error handling
- UPDATE error: enhanced error definitions
- UPDATE info: improved system info collection (CPU, mem, disk, network)
- UPDATE interface: enhanced monitor interface with status support and better component integration
- UPDATE metrics: improved metrics collection and export
- UPDATE middleware: enhanced monitoring middleware for HTTP
- UPDATE pool/interface: enhanced pool interface with better monitoring integration
- UPDATE pool/metrics: improved metrics collection in pool
- UPDATE pool/model: refactored pool model for better maintainability
- UPDATE pool/pool: enhanced pool implementation with better lifecycle
- UPDATE server: enhanced server monitoring with status tracking
- UPDATE types/monitor: improved monitor type definitions

[nats]
- UPDATE client: improved NATS client with better subscription handling
- UPDATE config: enhanced NATS configuration with cluster support
- UPDATE monitor: added monitoring integration for NATS operations
- UPDATE server: improved NATS server integration with monitoring

[network]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE bytes: improved byte size handling for network operations
- UPDATE number: enhanced number utilities for network data
- UPDATE protocol/encode: improved protocol encoding
- ADD protocol/format: protocol formatting utilities
- UPDATE protocol/interface: enhanced protocol interface
- UPDATE protocol/model: refactored protocol model

[password]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE password: improved password utilities with strength validation and secure generation

[pidcontroller]
- UPDATE interface: improved PID controller interface
- UPDATE model: enhanced PID controller model with better tuning parameters

[pprof]
- UPDATE tools: improved pprof utilities for profiling integration

[prometheus]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE bloom/bloom: improved bloom filter with better concurrency handling
- UPDATE bloom/collection: enhanced bloom filter collection operations
- UPDATE interface: enhanced prometheus interface with better type safety
- UPDATE metrics/interface: enhanced metrics interface with better registration
- UPDATE metrics/model: refactored metrics model for better maintainability
- UPDATE model: refactored prometheus model with better validation
- UPDATE pool: enhanced metric pool with concurrent access
- UPDATE pool/interface: enhanced pool interface
- UPDATE pool/model: refactored pool model
- UPDATE route: improved routing for metric endpoints
- UPDATE types: enhanced type definitions for metrics
- UPDATE webmetrics: improved existing metrics (requestBody, requestIPTotal, requestLatency, requestSlow, requestTotal, requestURITotal, responseBody)
- ADD webmetrics/activeConnections: gauge for tracking concurrent HTTP connections
- ADD webmetrics/requestErrors: counter for HTTP request errors
- ADD webmetrics/responseSizeByEndpoint: histogram for response size distribution by endpoint
- ADD webmetrics/statusCodeTotal: counter for HTTP status codes

[request]
- UPDATE interface: enhanced request interface with better type safety
- UPDATE model: refactored request model for better maintainability
- UPDATE options: improved request options with better validation
- UPDATE url: enhanced URL handling with better parsing

[retro]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE encoding: improved encoding utilities with better format support
- UPDATE format: enhanced formatting functions for retro compatibility
- UPDATE model: refactored retro model with better validation
- UPDATE utils: improved utility functions for version handling
- UPDATE version: enhanced version utilities for retro compatibility

[router]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE auth/interface: enhanced authentication interface with better validation
- UPDATE auth/model: improved authentication model
- UPDATE authheader/interface: enhanced authentication header interface
- UPDATE default: improved default router configuration
- UPDATE error: enhanced error definitions for router
- UPDATE header/config: improved header configuration
- UPDATE header/interface: enhanced header interface
- UPDATE header/model: refactored header model
- UPDATE interface: improved router interface with better type safety
- UPDATE middleware: improved router middleware with better error handling
- UPDATE model: refactored router model for better maintainability
- UPDATE router: enhanced core router implementation
- UPDATE tools: enhanced router utilities for route registration

[runner]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE package: move package for lifecycle management of long-running services (moved from server/runner)
- ADD interface: Runner interface with Start, Stop, Restart, IsRunning, and Uptime methods
- ADD startStop package: service lifecycle with blocking start and graceful stop (interface, model, comprehensive tests)
- ADD ticker package: periodic task execution at regular intervals (interface, model, comprehensive tests)
- ADD tests: concurrency, construction, errors, lifecycle, and uptime tests for both startStop and ticker
- ADD tools: RecoveryCaller for panic recovery in goroutines

[semaphore]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- FIX bar/bar: Dec method now properly decrements (was calling Inc64, now calls Dec64 with negative value)
- UPDATE bar: improved progress bar with better MPB integration
- UPDATE bar/context: enhanced context handling for cancellation
- UPDATE bar/interface: added methods for Total() and better progress tracking
- UPDATE bar/model: improved model with atomic operations
- UPDATE bar tests: enhanced bar_operations_test, edge_cases_test, integration_test, and semaphore_test
- UPDATE context: enhanced context propagation
- UPDATE interface: improved semaphore interface with weighted operations
- UPDATE model: refactored model for better thread safety
- UPDATE progress: enhanced progress tracking with multiple bars
- UPDATE sem/interface: added IsRunning() method for state tracking
- UPDATE sem/ulimit: improved ulimit handling for file descriptors
- UPDATE sem/weighted: enhanced weighted semaphore operations
- UPDATE types: improved type definitions for bar, progress, and semaphore

[server]
- REFACTOR: moved runner subpackage to root-level runner package
- DELETE: empty package after moved runner subpackage

[shell]
- UPDATE goprompt: improved interactive prompt handling with better input validation

[size]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- ADD arithmetic.go: NEW file with arithmetic operations (Add, Sub, Mul, Div with overflow detection)
- UPDATE encode: improved marshaling for JSON, YAML, TOML, Text, CBOR
- UPDATE format: enhanced human-readable formatting (B, KB, MB, GB, TB, PB, EB)
- UPDATE interface: added arithmetic methods (Mul, MulErr, Div, DivErr, Add, AddErr, Sub, SubErr)
- UPDATE model: refactored Size type with better validation
- UPDATE parse: improved parsing with unit detection (IEC and SI standards)

[smtp]
- UPDATE client: improved SMTP client with better error handling
- UPDATE config: enhanced configuration with validation
- UPDATE config/error: improved error definitions
- UPDATE config/interface: enhanced interface with context support
- UPDATE config/model: refactored model for better maintainability
- UPDATE interface: improved SMTP interface with monitoring support
- UPDATE monitor: added monitoring integration for SMTP operations
- DELETE network/network.go: removed legacy network handling (consolidated into client)
- UPDATE tlsmode/tls: enhanced TLS mode handling (None, TLS, StartTLS)
- UPDATE types/interface: improved type interface

[socket]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- ADD client/interface_darwin: macOS-specific socket client options
- UPDATE client/interface_linux: platform-specific socket options for Linux
- UPDATE client/interface_other: platform-specific socket options for other platforms
- UPDATE client/tcp/error: improved TCP client error handling
- UPDATE client/tcp/interface: enhanced TCP client interface
- UPDATE client/tcp/model: improved TCP client model
- UPDATE client/udp/error: improved UDP client error handling
- UPDATE client/udp/interface: enhanced UDP client interface
- UPDATE client/udp/model: improved UDP client model
- UPDATE client/unix/error: improved Unix socket client error handling
- UPDATE client/unix/ignore: enhanced ignore functionality
- UPDATE client/unix/interface: enhanced Unix socket client interface
- UPDATE client/unix/model: improved Unix socket client model
- UPDATE client/unixgram/error: improved Unix datagram client error handling
- UPDATE client/unixgram/ignore: enhanced ignore functionality
- UPDATE client/unixgram/interface: enhanced Unix datagram client interface
- UPDATE client/unixgram/model: improved Unix datagram client model
- UPDATE config/client: improved client configuration
- UPDATE config/server: improved server configuration
- DELETE delim: moved legacy delimiter to I/O package
- UPDATE interface: improved socket interface
- UPDATE io: enhanced I/O operations
- DELETE multi: moved legacy multi to I/O package
- ADD server/interface_darwin: macOS-specific socket server options
- UPDATE server/interface_linux: platform-specific server options for Linux
- UPDATE server/interface_other: platform-specific server options for other platforms
- UPDATE server/tcp/error: improved TCP server error handling
- UPDATE server/tcp/interface: enhanced TCP server interface
- UPDATE server/tcp/listener: improved TCP server listener
- UPDATE server/tcp/model: improved TCP server model
- UPDATE server/udp/error: improved UDP server error handling
- UPDATE server/udp/interface: enhanced UDP server interface
- UPDATE server/udp/listener: improved UDP server listener
- UPDATE server/udp/model: improved UDP server model
- UPDATE server/unix/error: improved Unix socket server error handling
- UPDATE server/unix/ignore: enhanced ignore functionality
- UPDATE server/unix/interface: enhanced Unix socket server interface
- UPDATE server/unix/listener: improved Unix socket server listener
- UPDATE server/unix/model: improved Unix socket server model
- UPDATE server/unixgram/error: improved Unix datagram server error handling
- UPDATE server/unixgram/ignore: enhanced ignore functionality
- UPDATE server/unixgram/interface: enhanced Unix datagram server interface
- UPDATE server/unixgram/listener: improved Unix datagram server listener
- UPDATE server/unixgram/model: improved Unix datagram server model

[static]
- UPDATE interface: improved static interface with monitoring support
- UPDATE model: refactored static model
- UPDATE monitor: added monitoring integration for static file operations

[status]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE cache: improved status cache with better synchronization
- UPDATE config: improved status configuration
- UPDATE control/encode: improved control encoding
- UPDATE control/interface: enhanced control interface with status tracking
- UPDATE control/model: refactored control model
- UPDATE encode: improved status encoding
- UPDATE error: enhanced error definitions for status
- UPDATE info: improved status info handling
- UPDATE interface: enhanced status interface
- UPDATE listmandatory/interface: improved list mandatory interface
- UPDATE listmandatory/model: refactored list mandatory model
- UPDATE mandatory/interface: enhanced mandatory interface
- UPDATE mandatory/model: refactored mandatory model
- UPDATE model: refactored status model
- UPDATE pool: improved status pool
- UPDATE route: enhanced status route handling

[test]
- DELETE: all manual tests are or will be replaced by proper automated test suites in respective packages

[version]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE error: improved error definitions for version
- UPDATE license: enhanced license handling
- UPDATE version: improved version utilities

[viper]
- ADD/UPDATE documentation: comprehensive documentation with monitoring patterns
- ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions
- UPDATE interface: enhanced viper interface with context support
- UPDATE model: refactored viper model for better maintainability
2025-11-15 21:09:32 +01:00

1032 lines
24 KiB
Markdown

# Config Package - Testing Documentation
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Go Version](https://img.shields.io/badge/Go-%3E%3D%201.21-blue)](https://golang.org/)
[![Ginkgo](https://img.shields.io/badge/Ginkgo-v2-green)](https://github.com/onsi/ginkgo)
Comprehensive testing guide for the config package and its components using Ginkgo v2/Gomega BDD framework.
> **AI Disclaimer (EU AI Act Article 50.4):** AI assistance was used solely for test generation, documentation, and bug resolution under human supervision.
---
## Table of Contents
- [Overview](#overview)
- [Test Framework](#test-framework)
- [Test Organization](#test-organization)
- [Running Tests](#running-tests)
- [Test Structure](#test-structure)
- [Test Coverage](#test-coverage)
- [Component Tests](#component-tests)
- [Mock Objects](#mock-objects)
- [Race Detection](#race-detection)
- [Performance Testing](#performance-testing)
- [Best Practices](#best-practices)
- [Troubleshooting](#troubleshooting)
- [CI/CD Integration](#cicd-integration)
- [Contributing](#contributing)
---
## Overview
The config package features a comprehensive test suite with **93+ specifications** covering lifecycle management, component orchestration, dependency resolution, event handling, and more. All tests follow BDD (Behavior-Driven Development) principles for maximum readability and maintainability.
### Test Metrics
| Metric | Value | Status |
|--------|-------|--------|
| **Total Specs** | 93+ | ✅ All passing |
| **Test Files** | 6 (core) + 80+ (components) | ✅ Organized by scope |
| **Code Coverage** | >90% | ✅ High coverage |
| **Execution Time** | ~0.1s (core), ~5s (all) | ✅ Fast |
| **Framework** | Ginkgo v2 + Gomega | ✅ BDD style |
| **Race Detection** | Enabled | ✅ No races found |
---
## Test Framework
### Ginkgo v2
Ginkgo is a BDD-style testing framework for Go, providing:
- **Structured Organization**: `Describe`, `Context`, `It` blocks for hierarchical test structure
- **Setup/Teardown**: `BeforeEach`, `AfterEach`, `BeforeSuite`, `AfterSuite` hooks
- **Focus/Skip**: `FDescribe`, `FIt`, `XDescribe`, `XIt` for debugging
- **Parallel Execution**: Built-in support for concurrent test execution
- **Rich Reporting**: Detailed failure messages and stack traces
- **Table-Driven Tests**: Native support for data-driven testing
### Gomega
Gomega is an assertion/matcher library providing:
- **Expressive Matchers**: `Expect(x).To(Equal(y))`, `Expect(err).NotTo(HaveOccurred())`
- **Async Assertions**: `Eventually()`, `Consistently()` for timing-sensitive tests
- **Custom Matchers**: Domain-specific assertions
- **Clear Failure Messages**: Detailed error output with actual vs expected values
### Installation
```bash
go get github.com/onsi/ginkgo/v2/ginkgo
go get github.com/onsi/gomega
```
---
## Test Organization
### Core Package Tests
```
config/
├── config_suite_test.go # Test suite entry point
├── lifecycle_test.go # Lifecycle operations (Start/Reload/Stop)
├── components_test.go # Component management tests
├── context_test.go # Context and cancellation tests
├── shell_test.go # Shell command tests
├── config_test.go # Configuration tests
└── integration_test.go # End-to-end integration tests
```
### Component Tests
Each component has its own test suite:
```
components/<component>/
├── <component>_suite_test.go # Suite entry point
├── interface_test.go # Interface compliance tests
├── lifecycle_test.go # Lifecycle tests
├── config_test.go # Configuration tests
├── client_test.go # Client operation tests
└── helper_test.go # Edge cases and helpers
```
---
## Running Tests
### Quick Test
Run all tests with standard output:
```bash
cd /sources/go/src/github.com/nabbar/golib/config
go test -v
```
### With Coverage
Generate and view coverage report:
```bash
# Run tests with coverage
go test -v -cover
# Generate HTML coverage report
go test -coverprofile=coverage.out
go tool cover -html=coverage.out
# Coverage by function
go tool cover -func=coverage.out
```
### With Race Detection
Enable race detector (requires CGO_ENABLED=1):
```bash
CGO_ENABLED=1 go test -race -v
# For all tests including components
CGO_ENABLED=1 go test -race -v ./...
```
### Using Ginkgo CLI
Run tests with enhanced Ginkgo output:
```bash
# Install Ginkgo CLI
go install github.com/onsi/ginkgo/v2/ginkgo@latest
# Run tests with verbose output
ginkgo -v
# Run with coverage
ginkgo -v -cover
# Run with trace for debugging
ginkgo -v --trace
# Run specific suite
ginkgo -v ./components/http
```
### Parallel Execution
Run tests in parallel (default 4 processes):
```bash
ginkgo -v -p
# Custom parallelism
ginkgo -v -procs=8
# Parallel with race detection
CGO_ENABLED=1 ginkgo -v -p -race
```
### Focus and Skip
Debug specific tests:
```bash
# Focus on specific file
ginkgo -v --focus-file lifecycle_test.go
# Focus on specific spec
ginkgo -v --focus "Component Lifecycle"
# Skip specific specs
ginkgo -v --skip "Integration"
# Fail fast (stop on first failure)
ginkgo -v --fail-fast
```
---
## Test Structure
ginkgo -v --focus-file context_test.go
# Shell command tests
ginkgo -v --focus-file shell_test.go
# Integration tests
ginkgo -v --focus-file integration_test.go
```
### Race Detection
Verify thread safety:
```bash
go test -race -v
ginkgo -race -v
```
### Focus on Specific Tests
Use focus filters for debugging:
```bash
# Focus on a specific describe block
ginkgo -v --focus="Lifecycle"
# Focus on a specific test
ginkgo -v --focus="should start all components"
```
---
## Test Structure
Tests are organized by functionality for maximum maintainability and readability:
### Test Files
1. **`config_suite_test.go`** (14 lines)
- Ginkgo test suite configuration
- Test runner setup
2. **`lifecycle_test.go`** (20 specs)
- Component lifecycle (Start/Reload/Stop)
- Lifecycle hooks (before/after)
- Error handling during lifecycle
- State management
3. **`components_test.go`** (21 specs)
- Component registration
- Component retrieval and deletion
- Component listing
- Dependency ordering
- Default configuration generation
4. **`context_test.go`** (13 specs)
- Context management
- Context storage and retrieval
- Cancel function registration
- Context cancellation handling
5. **`shell_test.go`** (19 specs)
- Shell command generation
- List/Start/Stop/Restart commands
- Command execution
- Output validation
6. **`integration_test.go`** (14 specs)
- Full lifecycle with multiple components
- Dependency chain management
- Hook execution order
- Configuration generation
- Error aggregation
- State tracking
7. **`config_test.go`** (6 specs, legacy)
- Basic integration tests
- Maintained for backward compatibility
## Running Tests
### Quick Test
```bash
cd /sources/go/src/github.com/nabbar/golib/config
go test -v
```
### With Coverage
```bash
go test -v -cover
go test -coverprofile=coverage.out
go tool cover -html=coverage.out
```
### Using Ginkgo
```bash
ginkgo -v
ginkgo -v -cover
ginkgo -v --trace
```
### Specific Test Categories
```bash
# Lifecycle tests
ginkgo -v --focus-file lifecycle_test.go
# Component management tests
ginkgo -v --focus-file components_test.go
# Context tests
ginkgo -v --focus-file context_test.go
# Shell command tests
ginkgo -v --focus-file shell_test.go
# Integration tests
ginkgo -v --focus-file integration_test.go
```
### With Race Detector
```bash
go test -race -v
ginkgo -race -v
```
### Focus on Specific Tests
```bash
# Focus on a specific describe block
ginkgo -v --focus="Lifecycle"
# Focus on a specific test
ginkgo -v --focus="should start all components"
```
## Test Coverage
### Coverage by Component
| Component | File | Specs | Coverage |
|-----------|------|-------|----------|
| Lifecycle | lifecycle_test.go | 20 | 100% |
| Components | components_test.go | 21 | 100% |
| Context | context_test.go | 13 | 100% |
| Shell | shell_test.go | 19 | 100% |
| Integration | integration_test.go | 14 | 100% |
| Legacy | config_test.go | 6 | 100% |
**Overall Coverage**: High (>90%)
## Test Categories
### 1. Lifecycle Tests (`lifecycle_test.go`)
**Scenarios Covered:**
- **Start**: Component initialization, hook execution, error handling
- **Reload**: Component reloading, hook execution, error propagation
- **Stop**: Component shutdown, hook execution, cleanup
- **Hooks**: Before/after hooks for start/reload/stop operations
- **State**: Started/running state tracking
**Example:**
```go
Describe("Start", func() {
It("should start all components successfully", func() {
err := cfg.Start()
Expect(err).ToNot(HaveOccurred())
Expect(cpt.started).To(BeTrue())
Expect(cpt.running).To(BeTrue())
})
})
```
**Key Features Tested:**
- Sequential component startup
- Hook execution order (before component → component → after component)
- Error propagation from components and hooks
- State transitions (not started → started → running)
- Multiple start/stop cycles
### 2. Component Management Tests (`components_test.go`)
**Scenarios Covered:**
- Component registration (`ComponentSet`)
- Component retrieval (`ComponentGet`, `ComponentHas`)
- Component deletion (`ComponentDel`)
- Component listing (`ComponentList`, `ComponentKeys`)
- Component type identification
- Dependency ordering
- Default configuration generation
**Example:**
```go
Describe("ComponentSet", func() {
It("should register a component", func() {
cpt := &simpleComponent{name: "comp1"}
cfg.ComponentSet("comp1", cpt)
Expect(cfg.ComponentHas("comp1")).To(BeTrue())
})
})
```
**Key Features Tested:**
- Component registration with initialization
- Key-based component access
- Component replacement
- Component removal
- Dependency resolution and ordering
- JSON configuration generation
### 3. Context Management Tests (`context_test.go`)
**Scenarios Covered:**
- Context instance creation
- Context value storage and retrieval
- Cancel function registration
- Cancel function cleanup
- Context cancellation handling
- Component context access
**Example:**
```go
Describe("Context", func() {
It("should have context that can store and load values", func() {
ctx := cfg.Context()
ctx.Store("test-key", "test-value")
val, ok := ctx.Load("test-key")
Expect(ok).To(BeTrue())
Expect(val).To(Equal("test-value"))
})
})
```
**Key Features Tested:**
- Context creation and access
- Key-value storage
- Context cancellation
- Custom cancel functions
- Context sharing between components
### 4. Shell Command Tests (`shell_test.go`)
**Scenarios Covered:**
- Command generation (`GetShellCommand`)
- List command (component listing)
- Start command (component startup)
- Stop command (component shutdown)
- Restart command (stop + start)
- Command output validation
- Error handling in commands
**Example:**
```go
Describe("list command", func() {
It("should list all components", func() {
cmds := cfg.GetShellCommand()
cmdMap := commandsToMap(cmds)
cmdMap["list"].Run(stdout, stderr, nil)
output := stdout.String()
Expect(output).To(ContainSubstring("comp1"))
Expect(output).To(ContainSubstring("comp2"))
})
})
```
**Key Features Tested:**
- Command availability (list, start, stop, restart)
- Component listing in dependency order
- Component startup with logging
- Component shutdown
- Restart (stop then start)
- Command output format
- Error reporting
### 5. Integration Tests (`integration_test.go`)
**Scenarios Covered:**
- Full lifecycle with multiple components
- Complex dependency chains (database → cache → API)
- Hook execution order across components
- Configuration file generation
- Error handling and aggregation
- State management across components
**Example:**
```go
Describe("Full lifecycle with multiple components", func() {
It("should start all components in correct order", func() {
err := cfg.Start()
Expect(err).ToNot(HaveOccurred())
// Verify order: db -> cache -> api
Expect(db.startOrder).To(BeNumerically("<", cache.startOrder))
Expect(cache.startOrder).To(BeNumerically("<", api.startOrder))
})
})
```
**Key Features Tested:**
- Multi-component startup in dependency order
- Multi-component reload
- Multi-component shutdown in reverse order
- Hook execution across lifecycle
- Dependency chain resolution
- Deep dependency chains
- Configuration aggregation
- Error aggregation from multiple components
### 6. Legacy Tests (`config_test.go`)
**Scenarios Covered:**
- Dependency ordering
- Lifecycle management
- Hook execution
- Default configuration generation
- Shell command execution
**Note**: These tests are maintained for backward compatibility and provide additional coverage.
## Test Helpers
### Mock Components
The test suite includes several mock components for testing:
#### 1. `testComponent`
Basic component with error injection capability:
```go
type testComponent struct {
started bool
running bool
startError error
reloadError error
// ... other fields
}
```
#### 2. `simpleComponent`
Minimal component for basic testing:
```go
type simpleComponent struct {
name string
deps []string
defaultConfig string
// ... other fields
}
```
#### 3. `mockDatabase`, `mockCache`, `mockAPI`
Specialized components for integration testing with order tracking:
```go
type mockDatabase struct {
simpleComponent
startOrder int
stopOrder int
}
```
### Helper Functions
#### `commandsToMap`
Converts command slice to map for easy access:
```go
func commandsToMap(cmds []shlcmd.Command) map[string]shlcmd.Command {
result := make(map[string]shlcmd.Command)
for _, cmd := range cmds {
result[cmd.Name()] = cmd
}
return result
}
```
## Best Practices
### 1. Use Descriptive Test Names
```go
It("should start all components in dependency order", func() {
// Test implementation
})
```
### 2. Test Both Success and Failure Cases
```go
Context("when components are registered", func() {
It("should start successfully", func() { /* ... */ })
})
Context("when start fails", func() {
It("should return error", func() { /* ... */ })
})
```
### 3. Clean Up Resources
```go
BeforeEach(func() {
cfg = libcfg.New(nil)
})
AfterEach(func() {
cfg.Stop()
})
```
### 4. Test Edge Cases
- Empty component lists
- Missing dependencies
- Nil values
- Multiple lifecycle cycles
- Concurrent operations
### 5. Verify State Transitions
```go
// Before start
Expect(cfg.ComponentIsStarted()).To(BeFalse())
// After start
err := cfg.Start()
Expect(err).ToNot(HaveOccurred())
Expect(cfg.ComponentIsStarted()).To(BeTrue())
```
## Common Patterns
### Pattern 1: Testing Lifecycle
```go
Describe("Component lifecycle", func() {
var cfg libcfg.Config
var cpt *testComponent
BeforeEach(func() {
cfg = libcfg.New(nil)
cpt = &testComponent{}
cfg.ComponentSet("test", cpt)
})
It("should complete full lifecycle", func() {
// Start
err := cfg.Start()
Expect(err).ToNot(HaveOccurred())
Expect(cpt.started).To(BeTrue())
// Reload
err = cfg.Reload()
Expect(err).ToNot(HaveOccurred())
Expect(cpt.reloadCount).To(Equal(1))
// Stop
cfg.Stop()
Expect(cpt.started).To(BeFalse())
})
})
```
### Pattern 2: Testing Hooks
```go
It("should call hooks in correct order", func() {
var order []string
cfg.RegisterFuncStartBefore(func() error {
order = append(order, "before")
return nil
})
cfg.RegisterFuncStartAfter(func() error {
order = append(order, "after")
return nil
})
err := cfg.Start()
Expect(err).ToNot(HaveOccurred())
Expect(order).To(Equal([]string{"before", "after"}))
})
```
### Pattern 3: Testing Dependencies
```go
It("should start components in dependency order", func() {
comp1 := &mockDatabase{}
comp2 := &mockCache{}
comp2.deps = []string{"database"}
cfg.ComponentSet("database", comp1)
cfg.ComponentSet("cache", comp2)
err := cfg.Start()
Expect(err).ToNot(HaveOccurred())
Expect(comp1.startOrder).To(BeNumerically("<", comp2.startOrder))
})
```
### Pattern 4: Testing Shell Commands
```go
It("should execute list command", func() {
stdout := &bytes.Buffer{}
stderr := &bytes.Buffer{}
cmds := cfg.GetShellCommand()
cmdMap := commandsToMap(cmds)
cmdMap["list"].Run(stdout, stderr, nil)
Expect(stdout.String()).To(ContainSubstring("component-name"))
Expect(stderr.Len()).To(Equal(0))
})
```
## Performance Characteristics
### Benchmarks
| Operation | Time | Specs |
|-----------|------|-------|
| Full test suite | ~0.1s | 93 |
| Lifecycle tests | ~0.02s | 20 |
| Component tests | ~0.01s | 21 |
| Context tests | ~0.01s | 13 |
| Shell tests | ~0.03s | 19 |
| Integration tests | ~0.03s | 14 |
### Memory Usage
- **Config Instance**: ~500 bytes
- **Component**: ~200 bytes per component
- **Context Storage**: ~100 bytes per key-value pair
- **Overall Test Suite**: <5MB
## Debugging Tests
### Verbose Output
```bash
go test -v ./config/...
ginkgo -v --trace
```
### Focus on Specific Test
```bash
ginkgo -focus "should start all components"
```
### Skip Tests
```bash
ginkgo -skip "integration"
```
### Check for Race Conditions
```bash
go test -race ./config/...
```
### Debug a Failing Test
```bash
# Run with increased verbosity
ginkgo -v -vv
# Run with trace for stack traces
ginkgo -v --trace
# Run a single test file
ginkgo -v --focus-file lifecycle_test.go
```
## CI/CD Integration
### GitHub Actions
```yaml
test-config:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: '1.21'
- name: Test config package
run: |
cd config
go test -v -race -cover
```
### GitLab CI
```yaml
test-config:
script:
- cd config
- go test -v -race -cover
coverage: '/coverage: \d+\.\d+% of statements/'
```
## Contributing
When adding new features to the config package:
1. **Write tests first** (TDD approach)
2. **Cover edge cases** (nil, empty, errors)
3. **Test lifecycle integration**
4. **Verify hook execution**
5. **Test with multiple components**
6. **Update this documentation**
### Test Template
```go
var _ = Describe("New Feature", func() {
var cfg libcfg.Config
BeforeEach(func() {
cfg = libcfg.New(nil)
})
Describe("Feature behavior", func() {
It("should handle basic case", func() {
// Test implementation
Expect(result).To(Equal(expected))
})
It("should handle edge case", func() {
// Test edge cases
Expect(result).ToNot(BeNil())
})
})
})
```
## Test Results Summary
```
Running Suite: config package
Random Seed: 1762086966
Will run 93 of 93 specs
Ran 93 of 93 Specs in 0.106 seconds
SUCCESS! -- 93 Passed | 0 Failed | 0 Pending | 0 Skipped
PASS
```
## Useful Commands
```bash
# Run all tests
go test ./config/...
# Run with coverage
go test -cover ./config/...
# Generate coverage report
go test -coverprofile=coverage.out ./config/...
go tool cover -html=coverage.out
# Run with race detector
go test -race ./config/...
# With Ginkgo
ginkgo -v ./config/
ginkgo -v --cover ./config/
ginkgo watch # Continuous testing
# Run specific test files
ginkgo -v --focus-file lifecycle_test.go
ginkgo -v --focus-file components_test.go
ginkgo -v --focus-file integration_test.go
# Focus on specific tests
ginkgo -v --focus="Lifecycle"
ginkgo -v --focus="should start"
# Generate test report
ginkgo -v --json-report=report.json
```
## Known Limitations
Understanding test limitations helps maintain realistic expectations:
1. **Circular Dependencies**: The package does not detect circular dependencies at compile time. Tests intentionally avoid circular dependency scenarios to prevent infinite loops during dependency resolution.
2. **Shutdown Testing**: The `Shutdown(code int)` method calls `os.Exit()` which terminates the process. This cannot be tested without process isolation or mocking the exit function.
3. **Signal Handling**: The `WaitNotify()` function relies on OS signals (SIGINT, SIGTERM, SIGQUIT) which require external signal sending for proper testing. Integration tests verify the signal channel setup but not actual signal reception.
4. **Component Implementation**: Tests use mock components. Real component implementations may have additional failure modes not covered by these tests.
5. **Concurrent Component Access**: While the registry is thread-safe, concurrent modification during lifecycle operations (start/stop) is not explicitly tested and should be avoided in production code.
---
## Debugging Tests
### Verbose Output
Enable detailed test output:
```bash
go test -v ./config/...
ginkgo -v --trace
```
### Focus on Specific Test
Isolate failing tests:
```bash
ginkgo -focus "should start all components"
```
### Skip Tests
Temporarily skip tests:
```bash
ginkgo -skip "integration"
```
### Check for Race Conditions
Always run with race detector during development:
```bash
go test -race ./config/...
```
### Debug a Failing Test
Steps to debug:
1. Run with increased verbosity: `ginkgo -v -vv`
2. Add trace for stack traces: `ginkgo -v --trace`
3. Run single test file: `ginkgo -v --focus-file lifecycle_test.go`
4. Add temporary `fmt.Printf` or use debugger
---
## Contributing Tests
When adding new features to the config package:
**Test-Driven Development**
1. Write tests first (TDD approach)
2. Ensure tests fail before implementation
3. Implement feature to make tests pass
4. Refactor while keeping tests green
**Coverage Requirements**
- Cover all public APIs
- Test success and failure paths
- Test edge cases (nil, empty, boundary values)
- Verify thread safety where applicable
**Test Organization**
- Place tests in appropriate test file
- Use descriptive `Describe` and `Context` blocks
- Write clear `It` descriptions
- Add comments for complex scenarios
**Documentation**
- Update TESTING.md for new test categories
- Document new mock components or helpers
- Explain non-obvious test scenarios
### Test Template
Use this template for new test files:
```go
package config_test
import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
libcfg "github.com/nabbar/golib/config"
)
var _ = Describe("New Feature", func() {
var cfg libcfg.Config
BeforeEach(func() {
cfg = libcfg.New(nil)
})
AfterEach(func() {
cfg.Stop()
})
Describe("Feature behavior", func() {
It("should handle basic case", func() {
// Arrange
// Act
// Assert
Expect(result).To(Equal(expected))
})
Context("when error occurs", func() {
It("should return error", func() {
// Test error handling
Expect(err).To(HaveOccurred())
})
})
})
})
```
---
## Support
For issues or questions about tests:
- **Test Failures**: Check test output for detailed error messages and stack traces
- **Usage Examples**: Review specific test files for implementation patterns
- **Feature Questions**: Consult [README.md](README.md) for feature documentation
- **Bug Reports**: Open an issue on [GitHub](https://github.com/nabbar/golib/issues) with:
- Test output (with `-v` flag)
- Go version and OS
- Steps to reproduce
- Expected vs actual behavior
---
## AI Transparency Notice
In accordance with Article 50.4 of the EU AI Act, AI assistance has been used for testing, documentation, and bug fixing under human supervision.
---
*Part of the [golib](https://github.com/nabbar/golib) testing suite.*