def test_services_access(): import remote remote._test_setup_settings(pxe_once=1) remote._test_bootstrap_restart() remote._test_remove_objects() __test_setup() time.sleep(5) api = cobbler_api.BootAPI() # test mod_python service URLs -- more to be added here templates = ["sample.ks", "sample_end.ks", "legacy.ks"] for template in templates: ks = "/var/lib/cobbler/kickstarts/%s" % template p = api.find_profile("profile0") assert p is not None p.set_kickstart(ks) api.add_profile(p) url = "http://127.0.0.1/cblr/svc/op/ks/profile/profile0" data = urlgrabber.urlread(url) assert data.find("look_for_this1") != -1 url = "http://127.0.0.1/cblr/svc/op/ks/system/system0" data = urlgrabber.urlread(url) assert data.find("look_for_this2") != -1 # see if we can pull up the yum configs url = "http://127.0.0.1/cblr/svc/op/yum/profile/profile0" data = urlgrabber.urlread(url) print "D1=%s" % data assert data.find("repo0") != -1 url = "http://127.0.0.1/cblr/svc/op/yum/system/system0" data = urlgrabber.urlread(url) print "D2=%s" % data assert data.find("repo0") != -1 for a in ["pre", "post"]: filename = "/var/lib/cobbler/triggers/install/%s/unit_testing" % a fd = open(filename, "w+") fd.write("#!/bin/bash\n") fd.write( "echo \"TESTING %s type ($1) name ($2) ip ($3)\" >> /var/log/cobbler/kicklog/cobbler_trigger_test\n" % a) fd.write("exit 0\n") fd.close() utils.os_system("chmod +x %s" % filename) urls = [ "http://127.0.0.1/cblr/svc/op/trig/mode/pre/profile/profile0" "http://127.0.0.1/cblr/svc/op/trig/mode/post/profile/profile0" "http://127.0.0.1/cblr/svc/op/trig/mode/pre/system/system0" "http://127.0.0.1/cblr/svc/op/trig/mode/post/system/system0" ] for x in urls: print "reading: %s" % url data = urlgrabber.urlread(x) print "read: %s" % data time.sleep(5) assert os.path.exists("/var/log/cobbler/kicklog/cobbler_trigger_test") os.unlink("/var/log/cobbler/kicklog/cobbler_trigger_test") os.unlink("/var/lib/cobbler/triggers/install/pre/unit_testing") os.unlink("/var/lib/cobbler/triggers/install/post/unit_testing") # trigger testing complete # now let's test the nopxe URL (Boot loop prevention) sys = api.find_system("system0") sys.set_netboot_enabled(True) api.add_system(sys) # save the system to ensure it's set True url = "http://127.0.0.1/cblr/svc/op/nopxe/system/system0" data = urlgrabber.urlread(url) time.sleep(2) sys = api.find_system("system0") assert str(sys.netboot_enabled).lower() not in ["1", "true", "yes"] # now let's test the listing URLs since we document # them even know I don't know of anything relying on them. url = "http://127.0.0.1/cblr/svc/op/list/what/distros" assert urlgrabber.urlread(url).find("distro0") != -1 url = "http://127.0.0.1/cblr/svc/op/list/what/profiles" assert urlgrabber.urlread(url).find("profile0") != -1 url = "http://127.0.0.1/cblr/svc/op/list/what/systems" assert urlgrabber.urlread(url).find("system0") != -1 url = "http://127.0.0.1/cblr/svc/op/list/what/repos" assert urlgrabber.urlread(url).find("repo0") != -1 url = "http://127.0.0.1/cblr/svc/op/list/what/images" assert urlgrabber.urlread(url).find("image0") != -1 # the following modes are implemented by external apps # and are not concerned part of cobbler's core, so testing # is less of a priority: # autodetect # findks # these features may be removed in a later release # of cobbler but really aren't hurting anything so there # is no pressing need. # now let's test the puppet external nodes support # and just see if we get valid YAML back without # doing much more url = "http://127.0.0.1/cblr/svc/op/puppet/hostname/hostname0" data = urlgrabber.urlread(url) assert data.find("alpha") != -1 assert data.find("beta") != -1 assert data.find("gamma") != -1 assert data.find("3") != -1 data = yaml.load(data) assert data.has_key("classes") assert data.has_key("parameters") # now let's test the template file serving # which is used by the snippet download_config_files # and also by koan's --update-files url = "http://127.0.0.1/cblr/svc/op/template/profile/profile0/path/_tmp_t1-rendered" data = urlgrabber.urlread(url) assert data.find("profile0") != -1 assert data.find("$profile_name") == -1 url = "http://127.0.0.1/cblr/svc/op/template/system/system0/path/_tmp_t2-rendered" data = urlgrabber.urlread(url) assert data.find("system0") != -1 assert data.find("$system_name") == -1 os.unlink("/tmp/cobbler_t1") os.unlink("/tmp/cobbler_t2") remote._test_remove_objects()
print "ELAPSED: %s seconds" % (time2 - time1) print "Creating test systems from scratch" time1 = time.time() for x in xrange(0, N): sys = api.new_system() sys.set_name("autotest-%s" % x) sys.set_mac_address(random_mac(), "eth0") sys.set_profile("foo") # assumes there is already a foo # print "... adding: %s" % sys.name api.add_system(sys) time2 = time.time() print "ELAPSED %s seconds" % (time2 - time1) #for mode2 in [ "fast", "normal", "full" ]: for mode in ["on", "off"]: print "Running netboot edit benchmarks (turn %s)" % (mode) time1 = time.time() for x in xrange(0, N): sys = api.systems().find("autotest-%s" % x) if mode == "off": sys.set_netboot_enabled(0) else: sys.set_netboot_enabled(1) # print "... editing: %s" % sys.name api.add_system(sys) time2 = time.time() print "ELAPSED: %s seconds" % (time2 - time1)
def test_services_access(): import remote remote._test_setup_settings(pxe_once=1) remote._test_bootstrap_restart() remote._test_remove_objects() __test_setup() time.sleep(5) api = cobbler_api.BootAPI() # test mod_python service URLs -- more to be added here templates = ["sample.ks", "sample_end.ks", "legacy.ks"] for template in templates: ks = "/var/lib/cobbler/kickstarts/%s" % template p = api.find_profile("profile0") assert p is not None p.set_kickstart(ks) api.add_profile(p) url = "http://127.0.0.1/cblr/svc/op/ks/profile/profile0" data = urlgrabber.urlread(url) assert data.find("look_for_this1") != -1 url = "http://127.0.0.1/cblr/svc/op/ks/system/system0" data = urlgrabber.urlread(url) assert data.find("look_for_this2") != -1 # see if we can pull up the yum configs url = "http://127.0.0.1/cblr/svc/op/yum/profile/profile0" data = urlgrabber.urlread(url) print "D1=%s" % data assert data.find("repo0") != -1 url = "http://127.0.0.1/cblr/svc/op/yum/system/system0" data = urlgrabber.urlread(url) print "D2=%s" % data assert data.find("repo0") != -1 for a in ["pre", "post"]: filename = "/var/lib/cobbler/triggers/install/%s/unit_testing" % a fd = open(filename, "w+") fd.write("#!/bin/bash\n") fd.write('echo "TESTING %s type ($1) name ($2) ip ($3)" >> /var/log/cobbler/kicklog/cobbler_trigger_test\n' % a) fd.write("exit 0\n") fd.close() utils.os_system("chmod +x %s" % filename) urls = [ "http://127.0.0.1/cblr/svc/op/trig/mode/pre/profile/profile0" "http://127.0.0.1/cblr/svc/op/trig/mode/post/profile/profile0" "http://127.0.0.1/cblr/svc/op/trig/mode/pre/system/system0" "http://127.0.0.1/cblr/svc/op/trig/mode/post/system/system0" ] for x in urls: print "reading: %s" % url data = urlgrabber.urlread(x) print "read: %s" % data time.sleep(5) assert os.path.exists("/var/log/cobbler/kicklog/cobbler_trigger_test") os.unlink("/var/log/cobbler/kicklog/cobbler_trigger_test") os.unlink("/var/lib/cobbler/triggers/install/pre/unit_testing") os.unlink("/var/lib/cobbler/triggers/install/post/unit_testing") # trigger testing complete # now let's test the nopxe URL (Boot loop prevention) sys = api.find_system("system0") sys.set_netboot_enabled(True) api.add_system(sys) # save the system to ensure it's set True url = "http://127.0.0.1/cblr/svc/op/nopxe/system/system0" data = urlgrabber.urlread(url) time.sleep(2) sys = api.find_system("system0") assert str(sys.netboot_enabled).lower() not in ["1", "true", "yes"] # now let's test the listing URLs since we document # them even know I don't know of anything relying on them. url = "http://127.0.0.1/cblr/svc/op/list/what/distros" assert urlgrabber.urlread(url).find("distro0") != -1 url = "http://127.0.0.1/cblr/svc/op/list/what/profiles" assert urlgrabber.urlread(url).find("profile0") != -1 url = "http://127.0.0.1/cblr/svc/op/list/what/systems" assert urlgrabber.urlread(url).find("system0") != -1 url = "http://127.0.0.1/cblr/svc/op/list/what/repos" assert urlgrabber.urlread(url).find("repo0") != -1 url = "http://127.0.0.1/cblr/svc/op/list/what/images" assert urlgrabber.urlread(url).find("image0") != -1 # the following modes are implemented by external apps # and are not concerned part of cobbler's core, so testing # is less of a priority: # autodetect # findks # these features may be removed in a later release # of cobbler but really aren't hurting anything so there # is no pressing need. # now let's test the puppet external nodes support # and just see if we get valid YAML back without # doing much more url = "http://127.0.0.1/cblr/svc/op/puppet/hostname/hostname0" data = urlgrabber.urlread(url) assert data.find("alpha") != -1 assert data.find("beta") != -1 assert data.find("gamma") != -1 assert data.find("3") != -1 data = yaml.safe_load(data) assert data.has_key("classes") assert data.has_key("parameters") # now let's test the template file serving # which is used by the snippet download_config_files # and also by koan's --update-files url = "http://127.0.0.1/cblr/svc/op/template/profile/profile0/path/_tmp_t1-rendered" data = urlgrabber.urlread(url) assert data.find("profile0") != -1 assert data.find("$profile_name") == -1 url = "http://127.0.0.1/cblr/svc/op/template/system/system0/path/_tmp_t2-rendered" data = urlgrabber.urlread(url) assert data.find("system0") != -1 assert data.find("$system_name") == -1 os.unlink("/tmp/cobbler_t1") os.unlink("/tmp/cobbler_t2") remote._test_remove_objects()
time1 = time.time() for x in xrange(0,N): sys = api.new_system() sys.set_name("autotest-%s" % x) sys.set_mac_address(random_mac(), "eth0") sys.set_profile("foo") # assumes there is already a foo # print "... adding: %s" % sys.name api.add_system(sys) time2 = time.time() print "ELAPSED %s seconds" % (time2 - time1) #for mode2 in [ "fast", "normal", "full" ]: for mode in [ "on", "off" ]: print "Running netboot edit benchmarks (turn %s)" % (mode) time1 = time.time() for x in xrange(0,N): sys = api.systems().find("autotest-%s" % x) if mode == "off": sys.set_netboot_enabled(0) else: sys.set_netboot_enabled(1) # print "... editing: %s" % sys.name api.add_system(sys) time2 = time.time() print "ELAPSED: %s seconds" % (time2 - time1)