85 lines
2.8 KiB
TypeScript
85 lines
2.8 KiB
TypeScript
#!/usr/bin/env bun
|
||
|
||
import { storeFile, getFileByObjectName, deleteFile, getStorageStats } from '../lib/fileStorage'
|
||
|
||
async function testMinIOFileOperations() {
|
||
console.log('🚀 开始测试 MinIO 文件操作...')
|
||
|
||
try {
|
||
// 测试截图文件上传
|
||
console.log('\n📤 测试截图文件上传...')
|
||
const testImageData = Buffer.from('fake image data for testing')
|
||
const storedScreenshot = await storeFile(
|
||
testImageData,
|
||
'test-screenshot.webp',
|
||
'image/webp',
|
||
'screenshot',
|
||
'test-hostname'
|
||
)
|
||
console.log('✅ 截图上传成功:', {
|
||
id: storedScreenshot.id,
|
||
objectName: storedScreenshot.objectName,
|
||
size: storedScreenshot.size
|
||
})
|
||
|
||
// 测试版本文件上传
|
||
console.log('\n📤 测试版本文件上传...')
|
||
const testExeData = Buffer.from('fake exe data for testing')
|
||
const storedVersion = await storeFile(
|
||
testExeData,
|
||
'winupdate-v1.0.0.exe',
|
||
'application/x-msdownload',
|
||
'version'
|
||
)
|
||
console.log('✅ 版本文件上传成功:', {
|
||
id: storedVersion.id,
|
||
objectName: storedVersion.objectName,
|
||
size: storedVersion.size
|
||
})
|
||
|
||
// 测试文件下载
|
||
console.log('\n📥 测试文件下载...')
|
||
const downloadedScreenshot = await getFileByObjectName(storedScreenshot.objectName)
|
||
if (downloadedScreenshot && downloadedScreenshot.buffer.equals(testImageData)) {
|
||
console.log('✅ 截图下载成功,数据一致')
|
||
} else {
|
||
console.log('❌ 截图下载失败或数据不一致')
|
||
}
|
||
|
||
const downloadedVersion = await getFileByObjectName(storedVersion.objectName)
|
||
if (downloadedVersion && downloadedVersion.buffer.equals(testExeData)) {
|
||
console.log('✅ 版本文件下载成功,数据一致')
|
||
} else {
|
||
console.log('❌ 版本文件下载失败或数据不一致')
|
||
}
|
||
|
||
// 测试存储统计
|
||
console.log('\n📊 测试存储统计...')
|
||
const stats = await getStorageStats()
|
||
console.log('✅ 存储统计:', {
|
||
totalObjects: stats.totalObjects,
|
||
totalSize: `${(stats.totalSize / 1024).toFixed(2)} KB`,
|
||
bucketName: stats.bucketName
|
||
})
|
||
|
||
// 清理测试文件
|
||
console.log('\n🗑️ 清理测试文件...')
|
||
const deleteScreenshotResult = await deleteFile(storedScreenshot.objectName)
|
||
const deleteVersionResult = await deleteFile(storedVersion.objectName)
|
||
|
||
if (deleteScreenshotResult && deleteVersionResult) {
|
||
console.log('✅ 测试文件清理成功')
|
||
} else {
|
||
console.log('⚠️ 部分测试文件清理失败')
|
||
}
|
||
|
||
console.log('\n🎉 MinIO 文件操作测试完成!')
|
||
|
||
} catch (error) {
|
||
console.error('❌ 测试过程中出现错误:', error)
|
||
process.exit(1)
|
||
}
|
||
}
|
||
|
||
testMinIOFileOperations().catch(console.error)
|