OpenKeel : la solution Cloud souveraine, française à portée européenne du groupe inherent Découvrir inherent

Déploiement

Iso-fonctionnalité et tests

Tout est testé et validé fonctionnellement contre le composant d'origine.

Iso-fonctionnel : rien ne change pour l'écosystème

Même API REST

  • Chemins, paramètres, codes HTTP
  • Corps d'erreur et microversions
  • Policies identiques

Même base de données

  • Mêmes tables et colonnes
  • Mêmes migrations de schéma
  • Données existantes réutilisables

Mêmes messages RabbitMQ

  • Enveloppes oslo.messaging
  • Mêmes RPC et topics
  • Notifications versionnées

Cinq niveaux de tests

  1. Tempest

    Suites officielles et plugins (neutron, cinder, keystone, octavia, barbican, designate, heat, manila…) contre le lab

  2. Différentiel CLI

    ok et openstack lancés côte à côte : mêmes requêtes HTTP, mêmes sorties, mêmes codes retour

  3. e2e replay

    Échanges enregistrés auprès du service Python, rejoués contre le Go (make e2e, report.json)

  4. Galera

    Tests d'intégration contre un vrai cluster MariaDB Galera

  5. Unitaires

    go vet, go test -race -cover ; faux clients Kubernetes et Helm

Les écarts connus de chaque service avec l'original sont dans openkeel-<service>/docs/CONFORMANCE.md.

Compatibilité, module par module

Pour chaque module : combien d'opérations de l'API d'origine il sert, et les méthodes qui vérifient qu'il reste compatible. Chaque ligne mène aux tests du module et à sa table d'API complète.

ModuleOpérations implémentéesMéthodes de test
Placement37 / 37Rejeu des échanges enregistrés, Tests unitaires et golden tests, Test différentiel, Concurrence sur Galera
Nova141 / 273Rejeu des échanges enregistrés, Tests unitaires et golden tests, Concurrence sur Galera, De bout en bout sur un lab, Scénario
Zun69 / 73Rejeu des échanges enregistrés, Tests unitaires et golden tests
Masakari21 / 21Rejeu des échanges enregistrés, Contrat client, Tests unitaires et golden tests, Concurrence sur Galera
Ironic131 / 131De bout en bout sur un lab, Scénario
Cinder147 / 218Rejeu des échanges enregistrés, Contrat client, Tests unitaires et golden tests, Concurrence sur Galera
Glance76 / 83Rejeu des échanges enregistrés, Contrat client, Concurrence sur Galera, Tests unitaires et golden tests
Manila132 / 258Rejeu des échanges enregistrés, Contrat client, De bout en bout sur un lab
Swift et S3—De bout en bout sur un lab
CSI Pure Storage—Contrat client, Tests unitaires et golden tests, Scénario
Neutron138 / 368Rejeu des échanges enregistrés, Contrat client, Concurrence sur Galera, De bout en bout sur un lab
Octavia (OVN)297 / 297Test différentiel, Tests unitaires et golden tests, Tempest, De bout en bout sur un lab
Neutron-FWaaS23 / 23Rejeu des échanges enregistrés, Test différentiel, Tests unitaires et golden tests, Concurrence sur Galera, De bout en bout sur un lab
Neutron-VPNaaS35 / 35Rejeu des échanges enregistrés, Tests unitaires et golden tests, Scénario, Concurrence sur Galera
OVN-BGP-Agent—Tests unitaires et golden tests, Scénario
Keystone163 / 259Rejeu des échanges enregistrés, Tests unitaires et golden tests, Contrat client, De bout en bout sur un lab
Barbican57 / 57Rejeu des échanges enregistrés, Contrat client, Test différentiel, Tests unitaires et golden tests, Concurrence sur Galera
Designate78 / 78Rejeu des échanges enregistrés, Tests unitaires et golden tests, Contrat client
CloudKitty66 / 66Rejeu des échanges enregistrés, Tests unitaires et golden tests, De bout en bout sur un lab
API EC2100 / 100Rejeu des échanges enregistrés, Scénario, Contrat client, Concurrence sur Galera
Skyline26 / 30Rejeu des échanges enregistrés, Tests unitaires et golden tests, Contrat client, De bout en bout sur un lab, Concurrence sur Galera
ok (CLI)—Test différentiel, Tests unitaires et golden tests, De bout en bout sur un lab
okadm—Tests unitaires et golden tests, De bout en bout sur un lab, Contrat client

Les nombres d'opérations proviennent du docs/PLAN.md de chaque module (Keystone : de son routeur Go), les méthodes de test de son docs/CONFORMANCE.md ; une méthode prévue par le module mais pas encore exécutée n'est pas comptée ici et apparaît comme telle sur la page du module.