21. unit: check_ansible_syntax check_openvswitch_playbook
Creates a Vagrant box with Open vSwitch image, checks that the
playbook runs to completion.
integration: bootstrap
sh -c '. venv/bin/activate; cd tests/smoke && behave'
Creates two Open vSwitch hosts via Vagrant, runs playbook,
creates a container on each and checks connectivity.
contract: bootstrap
sh -c '. venv/bin/activate; pytest tests/contract --capture=no'
Create Open vSwitch host via Vagrant, captures output of Consul
Handler and compares to input of playbook
Same tests as integration, on real device.
E2E
Integration
Service/Contract
Unit
makefile
testing the feature
22. list of tools
Vagrant: for virtual devices
Ansible: for device automation
Python: for coding
pytest: for running unit/service tests
behave: BDD for running integration tests
makefile: shortcuts for staging & running tests
23. Automation Tool
Linting Program
Testing Framework
Smoke Test
Testing Framework
Scripts/BDD
Smoke Test
test
Config/Template
Validation
Functional Validation
Output/Input
Certification
Staging/Production E2E
Integration
Service/Contract
Unit
26. service discovery
Given I have a DNS, DHCP, IP address management
solution
When I create a service (or application)
Then I should set up an alias and use the wildcard
root certificate for that service.
27. set those standards!
▢ names - {service}.{business}.companyxyz.net
▢ design principles - only use private domain, SSL
▢ common template/code formatting - Chef automation
▢ testing/development setup - container
▢ event triggers - ticket system
34. connectivity
Given I have a container or software-defined network
When I need to upgrade that network*
Then I should create a new network with the same
configuration and use it.
*Assumes no IP address affinity