4.4 KiB
Test Data for ONVIF Camera Testing
This directory contains discovered camera data for testing the onvif-go library.
Files
discovered_cameras_20260113.json
JSON file containing structured data for all 8 cameras discovered on the network:
- Complete endpoint information
- XAddrs (service URLs)
- Manufacturer and model details
- Supported ONVIF profiles
- Network configuration (IP, port)
- HTTPS support status
test_cameras_config.go
Go package providing programmatic access to test camera data:
TestCamerasslice with all discovered camerasGetCameraByManufacturer()- filter by manufacturerGetCameraByProfile()- filter by ONVIF profile supportGetHTTPSCameras()- get cameras with HTTPS support
Discovery Summary (2026-01-13)
Total Cameras Found: 8
By Manufacturer:
- AXIS: 3 cameras (P3818-PVE, Q3819-PVE, P5655-E)
- Bosch: 3 cameras (AUTODOME IP starlight 5000i, FLEXIDOME IP starlight 8000i, FLEXIDOME panoramic 5100i)
- Reolink: 2 cameras (E1Zoom, ReolinkTrackMixWiFi)
By ONVIF Profile Support:
- Profile Streaming: 8/8 (100%)
- Profile T (Streaming): 8/8 (100%)
- Profile G (Recording): 6/8 (75%)
- Profile M (Metadata): 4/8 (50%)
Network Configuration:
- Network: 192.168.2.0/24
- HTTPS Support: 6/8 cameras
- Port 80: 6 cameras
- Port 8000: 2 cameras (Reolink)
Usage in Tests
Example 1: Using JSON Data
import (
"encoding/json"
"os"
)
type CameraData struct {
Cameras []struct {
IP string `json:"ip"`
XAddrs []string `json:"xaddrs"`
Manufacturer string `json:"manufacturer"`
Model string `json:"model"`
} `json:"cameras"`
}
func loadTestCameras() (*CameraData, error) {
data, err := os.ReadFile("testdata/discovered_cameras_20260113.json")
if err != nil {
return nil, err
}
var cameras CameraData
err = json.Unmarshal(data, &cameras)
return &cameras, err
}
Example 2: Using Go Package
import "github.com/yourusername/onvif-go/testdata"
func TestWithAxisCameras(t *testing.T) {
axisCameras := testdata.GetCameraByManufacturer("AXIS")
for _, cam := range axisCameras {
t.Logf("Testing with %s %s at %s", cam.Manufacturer, cam.Model, cam.IP)
// Run your tests...
}
}
func TestProfileM(t *testing.T) {
metadataCameras := testdata.GetCameraByProfile("M")
if len(metadataCameras) == 0 {
t.Skip("No cameras with Profile M support")
}
// Test metadata operations...
}
func TestHTTPS(t *testing.T) {
httpsCameras := testdata.GetHTTPSCameras()
for _, cam := range httpsCameras {
// Test HTTPS connections...
}
}
Camera Details
High-End Cameras (Profile G + M)
- AXIS P3818-PVE (192.168.2.82)
- AXIS Q3819-PVE (192.168.2.190) - Dual network interfaces
- AXIS P5655-E (192.168.2.30)
- Bosch FLEXIDOME panoramic 5100i (192.168.2.24)
Mid-Range Cameras (Profile G)
- Bosch AUTODOME IP starlight 5000i (192.168.2.57)
- Bosch FLEXIDOME IP starlight 8000i (192.168.2.200)
Basic Cameras (Profile T only)
- Reolink E1Zoom (192.168.2.61:8000)
- Reolink ReolinkTrackMixWiFi (192.168.2.236:8000)
Notes
-
Credentials Required: These endpoints require authentication. Set test credentials using environment variables:
export ONVIF_TEST_USERNAME="your_username" export ONVIF_TEST_PASSWORD="your_password" -
Network Access: Tests require access to the 192.168.2.0/24 network.
-
Camera Availability: Ensure cameras are powered on and network-accessible before running tests.
-
HTTPS Certificates: AXIS and Bosch cameras use self-signed certificates. Tests may need to skip certificate verification:
client.HTTPClient = &http.Client{ Transport: &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, }, } -
Rate Limiting: Some cameras may rate-limit requests. Add delays between test runs if needed.
Updating Test Data
To refresh the discovered camera data:
# Run discovery and save output
./bin/discover 2>&1 | tee camera-discovery-$(date +%Y%m%d-%H%M%S).log
# Discovery will run for ~10 seconds
# Press Ctrl+C to stop when cameras are found
# Update JSON and Go files with new data as needed