summaryrefslogtreecommitdiff
path: root/jstests/readonly/temp_collection.js
blob: 5f32d723b719e95e91297a837426052893e1032a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Tests that the server is able to restart in read-only mode with data files that contain one or
// more temporary collections. See SERVER-24719 for details.
// @tags: [requires_replication]

'use strict';
load('jstests/readonly/lib/read_only_test.js');

runReadOnlyTest((function() {
    return {
        name: 'temp_collection',

        load: function(writableCollection) {
            var collName = writableCollection.getName();
            var writableDB = writableCollection.getDB();
            writableDB[collName].drop();

            assert.commandWorked(writableDB.runCommand({
                applyOps: [{
                    op: "c",
                    ns: writableDB.getName() + ".$cmd",
                    o: {create: collName, temp: true}
                }]
            }));

            var collectionInfos = writableDB.getCollectionInfos();
            var collectionExists = false;
            collectionInfos.forEach(info => {
                if (info.name === collName) {
                    assert(info.options.temp,
                           'The collection is not marked as a temporary one\n' +
                               tojson(collectionInfos));
                    collectionExists = true;
                }
            });
            assert(collectionExists, 'Can not find collection in collectionInfos');
            assert.writeOK(writableCollection.insert({a: 1}));
        },

        exec: function(readableCollection) {
            assert.eq(
                readableCollection.count(), 1, 'There should be 1 document in the temp collection');
        }
    };
})());