261 lines
5.7 KiB
Markdown
261 lines
5.7 KiB
Markdown
# HCN Manager Test Suite - Quick Reference
|
|
|
|
## One-Line Commands
|
|
|
|
```bash
|
|
# Run all tests
|
|
make test
|
|
|
|
# Run quick smoke tests (< 30 seconds)
|
|
make test-quick
|
|
|
|
# Run with verbose output
|
|
make test-verbose
|
|
|
|
# Run only unit tests
|
|
make test-unit
|
|
|
|
# Run only integration tests
|
|
make test-integration
|
|
|
|
# Run tests matching a pattern
|
|
make test-filter FILTER="parse_nm_connection"
|
|
|
|
# Debug a failing test
|
|
./run-tests.sh --trace --filter "test name"
|
|
|
|
# List all available tests
|
|
make list
|
|
|
|
# Clean temporary files
|
|
make clean
|
|
|
|
# Install BATS if not available
|
|
make install-bats
|
|
```
|
|
|
|
## Test Structure at a Glance
|
|
|
|
```
|
|
live/test/hcnmgr/
|
|
├── test_parse-hcnmgr.bats # 35 unit tests
|
|
├── test_integration.bats # 14 integration tests
|
|
├── run-tests.sh # Test runner script
|
|
├── Makefile # Convenient make targets
|
|
├── README.md # Full documentation
|
|
├── TEST_SUMMARY.md # This summary
|
|
├── QUICK_REFERENCE.md # This file
|
|
│
|
|
├── Fixtures (test data):
|
|
├── proc/device-tree/ # Mock device-tree
|
|
├── sys/class/net/ # Mock sysfs
|
|
├── nm-initrd-generator-connections/ # Before fixup
|
|
├── hcnmgr-connections/ # After fixup (expected)
|
|
└── system-connections/ # Additional test data
|
|
```
|
|
|
|
## Test Categories
|
|
|
|
| Make Target | Description | Tests | Time |
|
|
|-------------|-------------|-------|------|
|
|
| `make test` | All tests | 49 | ~60s |
|
|
| `make test-quick` | Smoke tests | ~10 | <30s |
|
|
| `make test-unit` | Unit tests only | 35 | ~40s |
|
|
| `make test-integration` | Integration only | 14 | ~20s |
|
|
| `make test-helpers` | Helper functions | 11 | ~10s |
|
|
| `make test-fixup` | Connection fixup | 3 | ~5s |
|
|
| `make test-cmdline` | Cmdline generation | 6 | ~10s |
|
|
|
|
## Common Workflows
|
|
|
|
### Before Committing Changes
|
|
|
|
```bash
|
|
cd live/test/hcnmgr
|
|
make test-quick
|
|
```
|
|
|
|
### After Modifying parse-hcnmgr.sh
|
|
|
|
```bash
|
|
# Full test suite
|
|
make test-verbose
|
|
|
|
# Or with timing info
|
|
make test-timing
|
|
```
|
|
|
|
### Debugging a Test Failure
|
|
|
|
```bash
|
|
# 1. Run with trace
|
|
./run-tests.sh --trace --filter "failing test"
|
|
|
|
# 2. Inspect artifacts
|
|
ls -lh /tmp/hcnmgr-tests/test.*
|
|
|
|
# 3. Run just that test
|
|
bats test_parse-hcnmgr.bats --filter "exact test name"
|
|
```
|
|
|
|
### Adding a New Test
|
|
|
|
```bash
|
|
# 1. Edit the appropriate .bats file
|
|
vim test_parse-hcnmgr.bats # or test_integration.bats
|
|
|
|
# 2. Add your test
|
|
@test "description" {
|
|
# test code
|
|
}
|
|
|
|
# 3. Run to verify
|
|
make test-filter FILTER="description"
|
|
|
|
# 4. Run full suite
|
|
make test
|
|
```
|
|
|
|
## Test Output Codes
|
|
|
|
| Symbol | Meaning |
|
|
|--------|---------|
|
|
| ✓ | Test passed |
|
|
| ✗ | Test failed |
|
|
| - | Test skipped |
|
|
|
|
## Fixture Reference
|
|
|
|
### Bond 333e80f5 (Primary Test Fixture)
|
|
|
|
```
|
|
HCN ID: 333e80f5
|
|
Devices:
|
|
- enP32775p1s0 (PCI, primary) MAC: 2e:7a:30:83:f5:00
|
|
- env6 (VNIC, backup) MAC: 2e:7a:32:2d:3d:06
|
|
|
|
Expected bond configuration:
|
|
bond=bond333e80f5:enP32775p1s0,env6:mode=1,miimon=100,fail_over_mac=2,primary=enP32775p1s0
|
|
|
|
Connection transformation:
|
|
Before: enP32775p1s0.nmconnection (controller=UUID)
|
|
After: bond333e80f5-enP32775p1s0.nmconnection (controller=bond333e80f5)
|
|
```
|
|
|
|
### Bond 5558a5a3 (Secondary Test Fixture)
|
|
|
|
```
|
|
HCN ID: 5558a5a3
|
|
Devices:
|
|
- enP16386p1s0 (primary)
|
|
- env7 (backup)
|
|
|
|
Used for: Multiple bond testing
|
|
```
|
|
|
|
## Key Files to Know
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `parse-hcnmgr.sh` | The script being tested |
|
|
| `parse-hcnmgr-improvements.md` | Refactoring documentation |
|
|
| `test_parse-hcnmgr.bats` | Unit tests |
|
|
| `test_integration.bats` | End-to-end tests |
|
|
| `README.md` | Full documentation |
|
|
|
|
## Environment Variables
|
|
|
|
```bash
|
|
# Enable bash tracing
|
|
BATS_TRACE=1 bats test_parse-hcnmgr.bats
|
|
|
|
# Custom temp directory
|
|
BATS_TMPDIR=/custom/path bats test_parse-hcnmgr.bats
|
|
```
|
|
|
|
## CI/CD Integration
|
|
|
|
### GitLab CI
|
|
|
|
```yaml
|
|
test:hcnmgr:
|
|
stage: test
|
|
script:
|
|
- cd live/test/hcnmgr
|
|
- make test-tap
|
|
```
|
|
|
|
### Pre-commit Hook
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
cd live/test/hcnmgr && make test-quick
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
| Problem | Solution |
|
|
|---------|----------|
|
|
| `bats: command not found` | `make install-bats` or `zypper install bats` |
|
|
| Test failures after editing script | Run `./run-tests.sh --trace --verbose` |
|
|
| Slow test execution | Run `make test-quick` instead |
|
|
| Permission errors | Ensure `/tmp` is writable |
|
|
| Fixture not found | Check you're in the `live/test/hcnmgr` directory |
|
|
|
|
## Performance Notes
|
|
|
|
- **Quick tests**: Helper functions, basic parsing (~10 tests, <30s)
|
|
- **Full suite**: All 49 tests (~60s)
|
|
- **Parallel execution**: Not supported by BATS (tests run sequentially)
|
|
- **Temp cleanup**: Automatic (BATS cleans up after each test)
|
|
|
|
## Coverage Summary
|
|
|
|
```
|
|
✓ Device discovery from device-tree
|
|
✓ MAC address extraction and formatting
|
|
✓ Bond configuration generation
|
|
✓ Command-line argument generation (bond=, ip=, rd.route=)
|
|
✓ NetworkManager connection fixup
|
|
✓ UUID to bond name transformation
|
|
✓ Connection file renaming
|
|
✓ Interface and MAC address matching
|
|
✓ Multiple bond handling
|
|
✓ DHCP and static IP configurations
|
|
✓ Route configuration
|
|
✓ Edge cases and error conditions
|
|
✓ POSIX compliance
|
|
✓ Performance optimizations
|
|
```
|
|
|
|
## Getting Help
|
|
|
|
```bash
|
|
# Show all make targets
|
|
make help
|
|
|
|
# Show test runner options
|
|
./run-tests.sh --help
|
|
|
|
# List all tests
|
|
make list
|
|
|
|
# Read full documentation
|
|
less README.md
|
|
|
|
# Read refactoring notes
|
|
less ../../parse-hcnmgr-improvements.md
|
|
```
|
|
|
|
## Links
|
|
|
|
- Script: `../../live-root/usr/lib/dracut/modules.d/99hcnmgr/parse-hcnmgr.sh`
|
|
- Documentation: [README.md](README.md)
|
|
- Summary: [TEST_SUMMARY.md](TEST_SUMMARY.md)
|
|
- Improvements: [../../parse-hcnmgr-improvements.md](../../parse-hcnmgr-improvements.md)
|
|
|
|
---
|
|
|
|
**Last Updated**: 2026-06-03
|
|
**Test Suite Version**: 1.0
|
|
**Total Tests**: 49 (35 unit + 14 integration)
|