From 9faa825eb1c2e53038afd92ab762116f96ab2f25 Mon Sep 17 00:00:00 2001
From: Guillaume Hervier <guillaume.hervier@nexedi.com>
Date: Fri, 29 Jun 2018 15:44:54 +0200
Subject: [PATCH] slapgrid_tests: Add tests for SlapObject supervisor config
 manipulation methods

---
 slapos/tests/slapobject.py | 47 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/slapos/tests/slapobject.py b/slapos/tests/slapobject.py
index 7f365e3cf..d22fb5079 100644
--- a/slapos/tests/slapobject.py
+++ b/slapos/tests/slapobject.py
@@ -400,6 +400,53 @@ class TestPartitionSlapObject(MasterMixin, unittest.TestCase):
     # XXX: What should it raise?
     self.assertRaises(IOError, partition.install)
 
+class TestPartitionSupervisorConfig(MasterMixin, unittest.TestCase):
+
+  def setUp(self):
+    MasterMixin.setUp(self)
+
+    self.software = self.createSoftware()
+    self.partition = self.createPartition(self.software.url)
+    self.partition.generateSupervisorConfiguration()
+
+    utils.bootstrapBuildout = FakeCallAndNoop()
+    utils.launchBuildout = FakeCallAndNoop()
+
+  def test_grouped_program(self):
+    self.assertEqual(self.partition.supervisor_configuration_group, '')
+    self.assertEqual(self.partition.partition_supervisor_configuration, '')
+
+    partition_id = self.partition.partition_id
+
+    group_id = self.partition.addCustomGroup('test', partition_id,
+                                             ['sample-1'])
+
+    self.assertIn('group:{}-test'.format(partition_id),
+                  self.partition.supervisor_configuration_group)
+
+    self.partition.addProgramToGroup(group_id, 'sample-1', 'sample-1',
+                                     '/bin/ls')
+
+    self.assertIn('program:{}-test_sample-1'.format(partition_id),
+                  self.partition.partition_supervisor_configuration)
+
+  def test_simple_service(self):
+    self.assertEqual(self.partition.supervisor_configuration_group, '')
+    self.assertEqual(self.partition.partition_supervisor_configuration, '')
+
+    partition_id = self.partition.partition_id
+
+    runners = ['runner-{}'.format(i) for i in range(3)]
+    path = os.path.join(self.partition.instance_path, 'etc/run')
+    self.partition.addServiceToGroup(partition_id, runners, path)
+
+    for i in range(3):
+      self.assertIn('program:{}_runner-{}'.format(partition_id, i),
+                    self.partition.partition_supervisor_configuration)
+
+      runner_path = os.path.join(self.partition.instance_path, 'etc/run',
+                                 'runner-{}'.format(i))
+
 class TestPartitionDestructionLock(MasterMixin, unittest.TestCase):
   def setUp(self):
     MasterMixin.setUp(self)
-- 
2.30.9