Merge commit 'd803bfe2b1fe7f5e219e50ac20d6801a0a58ac75' as 'vendor/ruvector'
This commit is contained in:
108
vendor/ruvector/scripts/test/test-docker-package.sh
vendored
Executable file
108
vendor/ruvector/scripts/test/test-docker-package.sh
vendored
Executable file
@@ -0,0 +1,108 @@
|
||||
#!/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 ==="
|
||||
Reference in New Issue
Block a user