#!/usr/share/ucs-test/runner python3
## desc: Check if a nscd stop also kills the container nscd processes
## tags: [docker]
## exposure: dangerous
## packages:
##   - docker.io

from __future__ import print_function
from dockertest import Appcenter, App, get_app_name, get_app_version, get_docker_appbox_ucs, get_docker_appbox_image
from univention.testing.utils import fail
import subprocess
import time

if __name__ == '__main__':

	nscd_stopped = False

	with Appcenter() as appcenter:
		app_name = get_app_name()
		app_version = get_app_version()

		app = App(name=app_name, version=app_version, container_version=get_docker_appbox_ucs())

		try:
			app.set_ini_parameter(DockerImage=get_docker_appbox_image())
			app.add_to_local_appcenter()

			appcenter.update()

			app.install()

			app.verify()

			print(app.execute_command_in_container('univention-install nscd'))

			ncs_container_pid_old = app.execute_command_in_container('pidof nscd')
			print(ncs_container_pid_old)
			subprocess.call('/etc/init.d/nscd stop', shell=True)
			nscd_stopped = True
			time.sleep(3)
			ncs_container_pid_new = app.execute_command_in_container('pidof nscd')
			print(ncs_container_pid_new)
			if ncs_container_pid_old != ncs_container_pid_new:
				fail('nscd pid in container have been changed. old: [%s], new: [%s]' % (ncs_container_pid_old, ncs_container_pid_new))

		finally:
			if nscd_stopped:
				subprocess.call('/etc/init.d/nscd start', shell=True)
			app.uninstall()
			app.remove()
