Commit 6c7dbe8c authored by nano's avatar nano

test

parent 1077e608
This diff is collapsed.
......@@ -12,7 +12,7 @@ export default {
new_package: `${baseUrl}/v1/package/`,
new_app: (appId) => `${baseUrl}/v1/app/${appId}`,
old_metalinks: (package_id) => `https://cdn01.moecube.com/release/metalinks/${package_id}.meta4`,
new_metalinks: (package_id) => `${baseUrl}/${package_id}/meta`,
new_metalinks: (package_id) => `${baseUrl}/v2/package-legacy/${package_id}/meta`,
old_checksums: (package_id) => `https://cdn01.moecube.com/release/checksums/${package_id}`,
new_checksums: (package_id) => `${baseUrl}/${package_id}/checksum`,
new_checksums: (package_id) => `${baseUrl}/v2/package-legacy/${package_id}/checksum`,
};
......@@ -2,7 +2,6 @@ import Router = require('koa-router');
import {toObjectID} from 'iridium';
import {mongodb} from '../models/Iridium';
import {Context} from 'koa';
import config from '../../config';
import {Archive, Package} from '../models/Package';
import {renderChecksum} from '../utils';
const router = new Router();
......@@ -15,7 +14,16 @@ router.get('/v2/packages', async (ctx: Context, next) => {
appId: ctx.request.query.appId,
status: 'uploaded'
}).toArray();
ctx.body = packs
ctx.body = packs;
});
router.get('/v2/package-legacy/:id/checksum', async (ctx: Context, next) => {
let pack = await mongodb.Packages.findOne({appId: ctx.params.id, status: 'uploaded'});
if (!pack) {
return ctx.throw(400, 'pack error');
}
ctx.body = renderChecksum(pack.files);
});
......@@ -44,6 +52,22 @@ router.get('/v2/package/:id/meta', async (ctx: Context, next) => {
});
});
router.get('/v2/package-legacy/:id/meta', async (ctx: Context, next) => {
let pack = await mongodb.Packages.findOne({appId: ctx.params.id, status: 'uploaded'});
if (!pack) {
return ctx.throw(400, 'pack error');
}
await ctx['render']('update', {
files: {
name: pack.id,
size: pack.fullSize,
hash: pack.fullHash
}
});
});
router.post('/v2/package/:id/update', async (ctx: Context, next) => {
const package_id = ctx.params.id;
const request_overhead = 1024 * 1024;
......
......@@ -11,15 +11,24 @@ async function test_checksums() {
const apps: any[] = (await (await fetch(config.new_apps_json)).json())
.filter(i => !['ygopro', 'desmume'].includes(i.id)); // 排除 ygopro 和 desmume
for (let app of _.sampleSize(apps, 5)) {
let oldMaps = new Set();
for (let app of apps) {
console.log(`正在测试 ${app.id} 的 checksum`);
const old_checksum = await (await fetch(config.old_checksums(app.id))).text();
const new_checksum = await (await fetch(config.new_checksums(app.id))).text();
if (old_checksum !== new_checksum) {
console.log('', old_checksum);
console.log('', new_checksum);
throw `应用 ${app.id} 的 checksum 不一致`;
}
old_checksum.split('\n').forEach(line => {
oldMaps.add(line);
});
new_checksum.split('\n').forEach(line => {
if (!oldMaps.has(line)) {
console.log('', old_checksum);
console.log('', new_checksum);
throw `应用 ${app.id} 的 checksum 不一致`;
}
});
}
}
async function test_download() {
......@@ -71,9 +80,14 @@ async function test_apps_json() {
async function main() {
// await test_apps_json();
await test_checksums();
await test_download();
await test_update();
try {
await test_checksums();
await test_download();
await test_update();
} catch (e) {
console.log(e);
}
console.log('ok');
}
......
<?xml version="1.0" encoding="UTF-8"?>
<metalink xmlns="urn:ietf:params:xml:ns:metalink">
{{#files}}
<file name="{{name}}">
<size>{{size}}</size>
<hash type="sha-256">{{hash}}</hash>
<url priority="1">https://cdn01.moecube.com/test-release/{{hash}}.tar.gz</url>
<url priority="1">https://cdn01.moecube.com/test-release/{{hash}}.tar.gz</url>
</file>
{{/files}}
</metalink>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment