Files
wifi-densepose/vendor/ruvector/scripts/test/test-docker-package.sh

109 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
# Test ruvector npm package in Docker container
set -e
echo "=== Creating test package ==="
# Create temporary test directory
TEST_DIR=$(mktemp -d)
cd "$TEST_DIR"
# Create package.json
cat > package.json << 'EOF'
{
"name": "ruvector-test",
"version": "1.0.0",
"type": "module",
"main": "test.mjs"
}
EOF
# Create test script
cat > test.mjs << 'EOF'
import ruvector from '@ruvector/core';
const { VectorDB, CollectionManager, version, hello, getHealth, getMetrics } = ruvector;
console.log('=== Ruvector Package Test ===\n');
// Test version and hello
console.log('Version:', version());
console.log('Hello:', hello());
// Test health
console.log('\n--- Health Check ---');
const health = getHealth();
console.log('Status:', health.status);
console.log('Version:', health.version);
// Test metrics
console.log('\n--- Metrics ---');
const metrics = getMetrics();
console.log('Metrics available:', metrics.length > 0 ? 'Yes' : 'No');
// Test VectorDB
console.log('\n--- VectorDB Test ---');
const db = VectorDB.withDimensions(4);
console.log('Created VectorDB with 4 dimensions');
// Insert vectors
const id1 = await db.insert({ vector: new Float32Array([1.0, 0.0, 0.0, 0.0]) });
const id2 = await db.insert({ vector: new Float32Array([0.0, 1.0, 0.0, 0.0]) });
const id3 = await db.insert({ vector: new Float32Array([0.9, 0.1, 0.0, 0.0]) });
console.log('Inserted 3 vectors:', id1, id2, id3);
// Search
const results = await db.search({ vector: new Float32Array([1.0, 0.0, 0.0, 0.0]), k: 2 });
console.log('Search results:', results);
// Verify correct order
if (results[0].id === id1 && results[1].id === id3) {
console.log('✓ Search results correct!');
} else {
console.log('✗ Search results incorrect');
process.exit(1);
}
// Test CollectionManager
console.log('\n--- CollectionManager Test ---');
try {
const manager = new CollectionManager('./test-collections');
console.log('Created CollectionManager');
await manager.createCollection('test_vectors', { dimensions: 128 });
console.log('Created collection: test_vectors');
const collections = await manager.listCollections();
console.log('Collections:', collections);
const stats = await manager.getStats('test_vectors');
console.log('Stats:', stats);
await manager.deleteCollection('test_vectors');
console.log('Deleted collection: test_vectors');
console.log('✓ CollectionManager works!');
} catch (err) {
console.log('CollectionManager error:', err.message);
}
console.log('\n=== All Tests Passed! ===');
EOF
echo "=== Test files created in $TEST_DIR ==="
# Copy local package
echo "=== Copying local package ==="
mkdir -p node_modules/@ruvector
cp -r /workspaces/ruvector/npm/core node_modules/@ruvector/
# Run test
echo ""
echo "=== Running test ==="
node test.mjs
# Cleanup
cd /
rm -rf "$TEST_DIR"
echo ""
echo "=== Test completed successfully ==="