File: README.rst

package info (click to toggle)
libmongodb-perl 1.4.5-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 7,004 kB
  • ctags: 2,932
  • sloc: perl: 12,511; ansic: 9,566; makefile: 22
file content (76 lines) | stat: -rw-r--r-- 2,851 bytes parent folder | download
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
==========
CRUD Tests
==========

The YAML and JSON files in this directory tree are platform-independent tests
meant to exercise the translation from the API to underlying commands that 
MongoDB understands. Given the variety of languages and implementations and 
limited nature of a description of a test, there are a number of things 
that aren't testable. For instance, none of these tests assert that maxTimeMS 
was properly sent to the server. This would involve a lot of infrastructure to 
define and setup. Therefore, these YAML tests are in no way a replacement for 
more thorough testing. However, they can provide an initial verification of 
your implementation.


Converting to JSON
==================

The tests are written in YAML
because it is easier for humans to write and read,
and because YAML includes a standard comment format.
A JSONified version of each YAML file is included in this repository.
Whenever you change the YAML, re-convert to JSON.
One method to convert to JSON is using 
`yamljs <https://www.npmjs.com/package/yamljs>`_::

    npm install -g yamljs
	yaml2json -s -p -r .
	

Version
=======

Files in the "specifications" repository have no version scheme.
They are not tied to a MongoDB server version,
and it is our intention that each specification moves from "draft" to "final"
with no further revisions; it is superseded by a future spec, not revised.

However, implementers must have stable sets of tests to target.
As test files evolve they will occasionally be tagged like
"crud-tests-YYYY-MM-DD", until the spec is final.

Format
======

Each YAML file has the following keys:

- data: The data that should exist in the collection under test before each test run.
- tests:
    An array of tests that are to be run independently of each other. Each test will 
    have some or all of the following fields

    - description: The name of the test
    - operation: 
      
      - name: The name of the operation as defined in the specification.
      - arguments: The names and values of arguments from the specification.
    - outcome:
      
      - result: The return value from the operation.
      - collection: 

          - name: OPTIONAL: The collection name to verify. If this isn't present
                  then use the collection under test.
          - data: The data that should exist in the collection after the 
                  operation has been run.


Use as integration tests
========================

Running these as integration tests will require a running mongod server.
Each of these tests is valid against a standalone mongod, a replica set, and a
sharded system for server version 3.0.0. Many of them will run against 2.4 and
2.6, but some will require conditional code. For instance, $out is not supported
in an aggregation pipeline in server 2.4, so that test must be skipped.