#!/usr/libexec/platform-python
#
# Test script for traceroute utils
#
# Copyright (C) 2021 Olaf Kirch <okir@suse.de>

import susetest

susetest.requireAddressResource("ipv4_address")

@susetest.setup
def setup(driver):
	'''Ensure we have all the resources this test suite requires'''
	global traceroute

	# Locate traceroute on the client
	traceroute = driver.client.requireExecutable("traceroute")


@susetest.test
def verify_traceroute(driver):
	'''traceroute.ipv4: check if test user can use traceroute'''
	node = driver.client
	user = node.requireUser("test-user")
	if not user.uid:
		node.logFailure("user %s does not seem to exist" % user.login)
		return

	# predict the test result based on SELinux user
	driver.predictTestResult(traceroute)

	cmd = f"{traceroute.path} {driver.server.ipv4_address}"
	st = node.run(cmd, user = user.login)
	if not st:
		node.logFailure(f"traceroute failed: {st.message}")
		return

	node.logInfo("OK, traceroute to immediate neighbor works")


# boilerplate tests
susetest.template('selinux-verify-executable', 'traceroute', nodeName = 'client')
# traceroute6 is usually a link to traceroute
#susetest.template('selinux-verify-executable', 'traceroute6', nodeName = 'client')

if __name__ == '__main__':
	susetest.perform()
