experimentManager.test.ts 1.77 KB
Newer Older
1
2
3
4
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

import { assert, expect } from 'chai';
5
import fs from 'fs';
6
import { Container, Scope } from 'typescript-ioc';
7
8
import os from 'os';
import path from 'path';
9
10
11

import * as component from '../../common/component';
import { cleanupUnitTest, prepareUnitTest } from '../../common/utils';
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { ExperimentsManager } from 'extensions/experiments_manager';
import globals from 'common/globals/unittest';

let tempDir: string | null = null;
let experimentManager: ExperimentsManager;
const mockedInfo = {
    "test": {
        "port": 8080,
        "startTime": 1605246730756,
        "endTime": "N/A",
        "status": "INITIALIZED",
        "platform": "local",
        "experimentName": "testExp",
        "tag": [], "pid": 11111,
        "webuiUrl": [],
        "logDir": null
28
    }
29
}
30

31
describe('Unit test for experiment manager', function () {
32
33
    before(() => {
        prepareUnitTest();
34
35
36
37
        tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'nni-ut-'));
        globals.paths.experimentsList = path.join(tempDir, '.experiment');
        fs.writeFileSync(globals.paths.experimentsList, JSON.stringify(mockedInfo));
        experimentManager = new ExperimentsManager();
38
39
40
    });

    after(() => {
41
42
        if (tempDir !== null) {
            fs.rmSync(tempDir, { force: true, recursive: true });
43
44
45
46
        }
        cleanupUnitTest();
    });

47
48
49
50
51
52
    it('test getExperimentsInfo', async () => {
        const experimentsInfo: {[key: string]: any} = await experimentManager.getExperimentsInfo();
        for (let idx in experimentsInfo) {
            if (experimentsInfo[idx]['id'] === 'test') {
                expect(experimentsInfo[idx]['status']).to.be.oneOf(['STOPPED', 'ERROR']);
                break;
53
            }
54
        }
55
56
    });
});