Concepts

Vigie's concepts in a nutshell. Find the details in their respective sections.

Tests

The organization of the Tests is in 3 parts.

File > TestSuite > []TestCase > []Teststep

Structure

Example of a TestSuit with one TestCase, One TestStep

name: TestSuite Vigie

config:
  frequency:
    http: 3m
  timeout:
    http: 5s

vars:
  google: ["google.fr,google.com"]

testcases:

- name: Example HTTP

  steps:

    - name: GET examples
      probe:
        type: http
        follow_redirects: true
        method: GET
        url: $item
      assertions:
        - probeinfo.responsetime < 600ms
        - httpcode == 200
      loop:
        - $google
        - foo.tld

config

Each Test* have a config property design to tweak your monitoring frequency.

config:
  frequency:
    dns: 120s
  timeout:
    dns: 1s
Each one inherits from the other, it's the results of the leaves that count.

loop

A loop allows you to multiply the TestStep by the number of elements included in a list.

Probes

Vigie has several types of probes covering different protocols. Each one takes different parameters, thus making it possible to test all kinds of combinations.

Exemples:

- probe:
    type: dns
    FQDN: "txt3.dns.test.vigie.dev."
    RecordType: "TXT"
- probe:
    type: icmp
    ipversion: 4
    host: vigie.dev
- probe:
    type: x509
    host: vigie.dev
    port: 443

For each probe the application response is testable according to the expected result. Follow the documentation of each Probe in order to know its capabilities.

Note: In case a Domain Name returns multiple IP addresses, each of these addresses will be tested and filled in a subtest.

Assertions

Following the return of a probe, the assertions allow the response to be tested in depth.

Multiple assertion verbs cover the majority of cases. (equality, difference, greater than, contained in)

Documentation complete Assertions

Exemples:

- probe:
  type: x509
  host: abc.xyz
  port: 443
assertions:
  - valid == true
  - daybeforeexpiration > 15
  - expired == false
  - endcertificate.dnsnames $$ "*.golang.com"
  - rootcertificate.publickeyalgorithm != "3DES"
  - endcertificate.signaturealgorithm == "SHA256-RSA"