mirror of
https://github.com/mudler/LocalAI.git
synced 2026-04-17 21:40:07 -04:00
51 lines
1.8 KiB
Bash
Executable File
51 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
CURDIR=$(dirname "$(realpath $0)")
|
|
|
|
echo "Running sam3-cpp backend tests..."
|
|
|
|
# The test requires a SAM model in GGML format.
|
|
# Uses EdgeTAM Q4_0 (~15MB) for fast CI testing.
|
|
SAM3_MODEL_DIR="${SAM3_MODEL_DIR:-$CURDIR/test-models}"
|
|
SAM3_MODEL_FILE="${SAM3_MODEL_FILE:-edgetam_q4_0.ggml}"
|
|
SAM3_MODEL_URL="${SAM3_MODEL_URL:-https://huggingface.co/PABannier/sam3.cpp/resolve/main/edgetam_q4_0.ggml}"
|
|
|
|
# Download model if not present
|
|
if [ ! -f "$SAM3_MODEL_DIR/$SAM3_MODEL_FILE" ]; then
|
|
echo "Downloading EdgeTAM Q4_0 model for testing..."
|
|
mkdir -p "$SAM3_MODEL_DIR"
|
|
curl -L -o "$SAM3_MODEL_DIR/$SAM3_MODEL_FILE" "$SAM3_MODEL_URL" --progress-bar
|
|
echo "Model downloaded."
|
|
fi
|
|
|
|
# Create a test image (4x4 red pixel PNG) using base64
|
|
# This is a minimal valid PNG for testing the pipeline
|
|
TEST_IMAGE_DIR="$CURDIR/test-data"
|
|
mkdir -p "$TEST_IMAGE_DIR"
|
|
|
|
# Generate a simple test image using Python if available, otherwise use a pre-encoded one
|
|
if command -v python3 &> /dev/null; then
|
|
python3 -c "
|
|
import struct, zlib, base64
|
|
def create_png(width, height, r, g, b):
|
|
raw = b''
|
|
for y in range(height):
|
|
raw += b'\x00' # filter byte
|
|
for x in range(width):
|
|
raw += bytes([r, g, b])
|
|
def chunk(ctype, data):
|
|
c = ctype + data
|
|
return struct.pack('>I', len(data)) + c + struct.pack('>I', zlib.crc32(c) & 0xffffffff)
|
|
ihdr = struct.pack('>IIBBBBB', width, height, 8, 2, 0, 0, 0)
|
|
return b'\x89PNG\r\n\x1a\n' + chunk(b'IHDR', ihdr) + chunk(b'IDAT', zlib.compress(raw)) + chunk(b'IEND', b'')
|
|
with open('$TEST_IMAGE_DIR/test.png', 'wb') as f:
|
|
f.write(create_png(64, 64, 255, 0, 0))
|
|
"
|
|
echo "Test image created."
|
|
fi
|
|
|
|
echo "sam3-cpp test setup complete."
|
|
echo "Model: $SAM3_MODEL_DIR/$SAM3_MODEL_FILE"
|
|
echo "Note: Full integration tests run via the LocalAI test-extra target."
|