Commit 6c7dbe8c authored by nano's avatar nano

test

parent 1077e608
This diff is collapsed.
...@@ -12,7 +12,7 @@ export default { ...@@ -12,7 +12,7 @@ export default {
new_package: `${baseUrl}/v1/package/`, new_package: `${baseUrl}/v1/package/`,
new_app: (appId) => `${baseUrl}/v1/app/${appId}`, new_app: (appId) => `${baseUrl}/v1/app/${appId}`,
old_metalinks: (package_id) => `https://cdn01.moecube.com/release/metalinks/${package_id}.meta4`, 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}`, 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'); ...@@ -2,7 +2,6 @@ import Router = require('koa-router');
import {toObjectID} from 'iridium'; import {toObjectID} from 'iridium';
import {mongodb} from '../models/Iridium'; import {mongodb} from '../models/Iridium';
import {Context} from 'koa'; import {Context} from 'koa';
import config from '../../config';
import {Archive, Package} from '../models/Package'; import {Archive, Package} from '../models/Package';
import {renderChecksum} from '../utils'; import {renderChecksum} from '../utils';
const router = new Router(); const router = new Router();
...@@ -15,7 +14,16 @@ router.get('/v2/packages', async (ctx: Context, next) => { ...@@ -15,7 +14,16 @@ router.get('/v2/packages', async (ctx: Context, next) => {
appId: ctx.request.query.appId, appId: ctx.request.query.appId,
status: 'uploaded' status: 'uploaded'
}).toArray(); }).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) => { ...@@ -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) => { router.post('/v2/package/:id/update', async (ctx: Context, next) => {
const package_id = ctx.params.id; const package_id = ctx.params.id;
const request_overhead = 1024 * 1024; const request_overhead = 1024 * 1024;
......
...@@ -11,15 +11,24 @@ async function test_checksums() { ...@@ -11,15 +11,24 @@ async function test_checksums() {
const apps: any[] = (await (await fetch(config.new_apps_json)).json()) const apps: any[] = (await (await fetch(config.new_apps_json)).json())
.filter(i => !['ygopro', 'desmume'].includes(i.id)); // 排除 ygopro 和 desmume .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`); console.log(`正在测试 ${app.id} 的 checksum`);
const old_checksum = await (await fetch(config.old_checksums(app.id))).text(); const old_checksum = await (await fetch(config.old_checksums(app.id))).text();
const new_checksum = await (await fetch(config.new_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); old_checksum.split('\n').forEach(line => {
console.log('', new_checksum); oldMaps.add(line);
throw `应用 ${app.id} 的 checksum 不一致`; });
}
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() { async function test_download() {
...@@ -71,9 +80,14 @@ async function test_apps_json() { ...@@ -71,9 +80,14 @@ async function test_apps_json() {
async function main() { async function main() {
// await test_apps_json(); // await test_apps_json();
await test_checksums();
await test_download(); try {
await test_update(); await test_checksums();
await test_download();
await test_update();
} catch (e) {
console.log(e);
}
console.log('ok'); 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