From: Sandrine Avakian Date: Mon, 10 Sep 2012 12:20:52 +0000 (+0200) Subject: REmoved urn_to_sliver_id import in slabaggregate and slabdriver. X-Git-Tag: sfa-2.1-24~3^2~88 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=8c96407adbb1f0a95d8b1667faaa258b3a7cf63f;p=sfa.git REmoved urn_to_sliver_id import in slabaggregate and slabdriver. Added test directory in senslab folder, moved tests files there. --- diff --git a/sfa/senslab/slabaggregate.py b/sfa/senslab/slabaggregate.py index 0ec8ddea..41660f37 100644 --- a/sfa/senslab/slabaggregate.py +++ b/sfa/senslab/slabaggregate.py @@ -1,7 +1,7 @@ import time -from sfa.util.xrn import hrn_to_urn, urn_to_hrn, urn_to_sliver_id +from sfa.util.xrn import hrn_to_urn, urn_to_hrn from sfa.rspecs.rspec import RSpec from sfa.rspecs.elements.versions.slabv1Node import SlabPosition diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index 5ef99c8e..30c35e82 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -16,7 +16,7 @@ from sfa.managers.driver import Driver from sfa.rspecs.version_manager import VersionManager from sfa.rspecs.rspec import RSpec -from sfa.util.xrn import hrn_to_urn, urn_to_sliver_id, get_leaf +from sfa.util.xrn import hrn_to_urn, get_leaf ## thierry: everything that is API-related (i.e. handling incoming requests) diff --git a/sfa/senslab/tests/TestSuite.py b/sfa/senslab/tests/TestSuite.py new file mode 100644 index 00000000..3e09faad --- /dev/null +++ b/sfa/senslab/tests/TestSuite.py @@ -0,0 +1,271 @@ +########################################################################### +# Copyright (C) 2012 by +# +# +# Copyright: See COPYING file that comes with this distribution +# +########################################################################### +#LDAP import +from sfa.senslab.LDAPapi import * +import ldap.modlist as modlist +import ldap as L + +#logger sfa +from sfa.util.sfalogging import logger + +#OAR imports +from datetime import datetime +from dateutil import tz +from time import strftime,gmtime +from sfa.senslab.OARrestapi import OARrestapi + +#Test slabdriver +from sfa.senslab.slabdriver import SlabDriver +from sfa.util.config import Config + +import sys + + + +def parse_options(): + + #arguments supplied + if len(sys.argv) > 1 : + options_list = sys.argv[1:] + #For each valid option, execute the associated function + #(defined in the dictionnary supported_options) + job_id = 1 + valid_options_dict = {} + value_list = [] + #Passing options to the script should be done like this : + #-10 OAR -2 SlabDriver + for option in options_list: + if option in supported_options: + #update the values used for the fonctions associated + #with the options + + valid_options_dict[option] = value_list + #empty the values list for next option + value_list = [] + print valid_options_dict + else: + if option[0] == '-': + value_list.append(option[1:]) + print "value_list",value_list + + + return valid_options_dict + +def TestLdap(): + logger.setLevelDebug() + + ldap = LDAPapi() + ret = ldap.conn.connect(bind=True) + ldap.conn.close() + print "TEST ldap.conn.connect(bind=True)" , ret + + ret = ldap.conn.connect(bind=False) + ldap.conn.close() + print "TEST ldap.conn.connect(bind=False)", ret + + + ret = ldap.LdapSearch() + print "TEST ldap.LdapSearch ALL",ret + + ret = ldap.LdapSearch('(uid=avakian)', []) + print "\r\n TEST ldap.LdapSearch ids = avakian",ret + + + password = ldap.generate_password() + print "\r\n TEST generate_password ",password + + maxi = ldap.find_max_uidNumber() + print "\r\n TEST find_max_uidNumber " , maxi + + data = {} + data['last_name'] = "Drake" + data['first_name']="Tim" + data['givenName']= data['first_name'] + data['mail'] = "robin@arkham.fr" + + record={} + record['hrn'] = 'senslab2.drake' + record['last_name'] = "Drake" + record['first_name']="Tim" + record['mail'] = "robin@arkham.fr" + + datanight = {} + datanight['last_name'] = "Grayson" + datanight['first_name']="Dick" + datanight['givenName']= datanight['first_name'] + datanight['mail'] = "nightwing@arkham.fr" + + + record_night = {} + record_night['hrn'] = 'senslab2.grayson' + record_night['last_name'] = datanight['last_name'] + record_night['first_name'] = datanight['first_name'] + record_night['mail'] = datanight['mail'] + + login = ldap.generate_login(data) + print "\r\n Robin \tgenerate_login ", ret + + ret = ldap.LdapAddUser(data) + print "\r\n Robin \tLdapAddUser ", ret + + req_ldap = '(uid=' + login + ')' + ret = ldap.LdapSearch(req_ldap, []) + print "\r\n Robin \tldap.LdapSearch ids = %s %s"%(login,ret ) + + password = "Thridrobin" + enc = ldap.encrypt_password(password) + print "\r\n Robin \tencrypt_password ", enc + + ret = ldap.LdapModifyUser(record, {'userPassword':enc}) + print "\r\n Robin \tChange password LdapModifyUser ", ret + + dn = 'uid=' + login + ',' + ldap.baseDN + ret = ldap.LdapDelete(dn) + print "\r\n Robin \tLdapDelete ", ret + + ret = ldap.LdapFindUser(record_night) + print "\r\n Nightwing \tldap.LdapFindHrn %s : %s"%(record_night,ret) + + ret = ldap.LdapSearch('(uid=grayson)', []) + print "\r\n Nightwing \tldap.LdapSearch ids = %s %s"%('grayson',ret ) + + ret = ldap.LdapAddUser(datanight) + print "\r\n Nightwing \tLdapAddUser ", ret + + ret = ldap.LdapResetPassword(record_night) + print "\r\n Nightwing \tLdapResetPassword de %s : %s "%(record_night,ret) + + ret = ldap.LdapDeleteUser(record_night) + print "\r\n Nightwing \tLdapDeleteUser ", ret + + + record_avakian = {} + record_avakian['last_name'] = 'avakian' + record_avakian['first_name'] = 'sandrine' + record_avakian['email'] = 'sandrine.avakian@inria.fr' + pubkey = "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwSUkJ+cr3xM47h8lFkIXJoJhg4wHakTaLJmgTXkzvUmQsQeFB2MjUZ6WAelMXj/EFz2+XkK+bcWNXwfbrLptJQ+XwGpPZlu9YV/kzO63ghVrAyEg0+p7Pn1TO9f1ZYg4R6JfP/3qwH1AsE+X3PNpIewsuEIKwd2wUCJDf5RXJTpl39GizcBFemrRqgs0bdqAN/vUT9YvtWn8fCYR5EfJHVXOK8P1KmnbuGZpk7ryz21pDMlgw13+8aYB+LPkxdv5zG54A5c6o9N3zOCblvRFWaNBqathS8y04cOYWPmyu+Q0Xccwi7vM3Ktm8RoJw+raQNwsmneJOm6KXKnjoOQeiQ== savakian@sfa2.grenoble.senslab.info" + + ret = ldap.LdapModifyUser(record_avakian, {'sshPublicKey':pubkey}) + print "\r\n Sandrine \tChange pubkey LdapModifyUser ", ret + + password = "ReptileFight" + enc = ldap.encrypt_password(password) + print "\r\n sandrine \tencrypt_password ", enc + + ret = ldap.LdapModifyUser(record_avakian, {'userPassword':enc}) + print "\r\n sandrine \tChange password LdapModifyUser ", ret + return + + +def get_stuff(oar, uri): + import httplib + import json + headers = {} + data = json.dumps({}) + + headers['X-REMOTE_IDENT'] = 'avakian' + + headers['content-length'] = '0' #seems that it does not work if we don't add this + + + conn = httplib.HTTPConnection(oar.oarserver['ip'],oar.oarserver['port']) + conn.request("GET",uri,data , headers ) + resp = ( conn.getresponse()).read() + #logger.debug("OARrestapi: \t GETRequestToOARRestAPI resp %s" %( resp)) + conn.close() + + + js = json.loads(resp) + return js + + + + +def TestOAR(job_id = None): + + if isinstance(job_id,list) and len(job_id) == 1: + job_id = job_id[0] + + oar = OARrestapi() + jobs = oar.parser.SendRequest("GET_reserved_nodes", username = 'avakian') + print "\r\n OAR GET_reserved_nodes ",jobs + + + + jobs = oar.parser.SendRequest("GET_jobs") + print "\r\n OAR GET_jobs ",jobs + + + jobs = oar.parser.SendRequest("GET_jobs_id", job_id, 'avakian') + print "\r\n OAR GET_jobs_id ",jobs + + uri = '/oarapi/jobs/details.json?state=Running,Waiting,Launching&user=avakian' + raw_json = get_stuff(oar,uri) + print "\r\nOAR ", uri, raw_json, "\r\n KKK \t",raw_json.keys() + + uri = '/oarapi/jobs/' + job_id +'.json' + raw_json = get_stuff(oar,uri) + print "\r\n OAR ",uri,raw_json, "\r\n KKK \t",raw_json.keys() + + uri = '/oarapi/jobs/' + job_id + '/resources.json' + raw_json = get_stuff(oar,uri) + print "\r\n OAR ",uri, raw_json, "\r\n KKK \t",raw_json.keys() + + time_format = "%Y-%m-%d %H:%M:%S" + + server_timestamp,server_tz = oar.parser.SendRequest("GET_timezone") + + print "\r\n OAR GetTimezone ",server_timestamp, server_tz + print(datetime.fromtimestamp(int(server_timestamp)).strftime('%Y-%m-%d %H:%M:%S')) + + uri = '/oarapi/resources/full.json' + raw_json = get_stuff(oar,uri) + print "\r\n OAR ",uri, raw_json, "\r\n KKK \t",raw_json.keys() + + uri = '/oarapi/jobs.json?user=avakian' + raw_json = get_stuff(oar,uri) + print "\r\nOAR ", uri, raw_json, "\r\n KKK \t",raw_json.keys() + return + +def TestSlabDriver(job_id): + if isinstance(job_id,list) and len(job_id) == 1: + job_id = job_id[0] + slabdriver = SlabDriver(Config()) + nodes = slabdriver.GetReservedNodes(username='avakian') + print "\r\n \r\n" ,nodes + + l = slabdriver.GetSlices(slice_filter = '29', slice_filter_type = 'record_id_user') + + + print "\r\n \r\nGetSlices" ,l + + persons = slabdriver.GetPersons() + print "\r\n \r\n GetPersons" ,persons + #slabdriver.DeleteJobs(job_id,'senslab2.avakian_slice') + +def RunAll(): + TestLdap() + TestOAR() + + +supported_options = { + 'OAR' : TestOAR, + 'LDAP': TestLdap, + 'driver': TestSlabDriver, + 'all' : RunAll } + +def main(): + opts = parse_options() + for opt in opts: + supported_options[opt](opts[opt]) + + #TestLdap() + #TestOAR() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/sfa/senslab/tests/bash_testsuite b/sfa/senslab/tests/bash_testsuite new file mode 100755 index 00000000..38632f9c --- /dev/null +++ b/sfa/senslab/tests/bash_testsuite @@ -0,0 +1,52 @@ +#!/bin/bash +if (( ! $# == 2 )) +then + echo " Usage : bash_test takes 2 arguments : one jobid and one of the following:" + echo " LDAP/ OAR / driver " + echo $# + exit +fi + +sfi.py list senslab2 +echo " ================= SFI.PY RESOURCES =============" +sfi.py resources + +echo " ================= SFI.PY RESOURCES -R SLAB =============" +sfi.py resources -r slab + +echo " ================= SFI.PY RESOURCES -L ALL =============" +sfi.py resources -l all + +echo " ================= SFI.PY RESOURCES -R SLAB -L ALL =============" +sfi.py resources -r slab -l all + +echo " ================= SFI.PY RESOURCES -L ALL > avakian_adv.rspec =============" +sfi.py resources -l all > /home/savakian/flab-sfa/avakian_adv.rspec + +echo " ================= SFI.PY RESOURCES avakian_adv.rspec =============" +sfi.py resources senslab2.avakian_slice + + +echo " ================= SFI.PY SHOW SLICE =============" +sfi.py show senslab2.avakian_slice + +echo " ================= SFI.PY SHOW USER =============" +sfi.py show senslab2.avakian + +echo " ================= SFI.PY SHOW NODE =============" +sfi.py show senslab2.node7.devlille.senslab.info + +echo " ================= SFI.PY SLICES =============" +sfi.py slices + +echo " ================= SFI.PY STATUS SLICE =============" +sfi.py status senslab2.avakian_slice + +echo " ================= SFI.PY CREATE SLICE =============" +sfi.py create senslab2.avakian_slice /home/savakian/flab-sfa/avakian_adv.rspec + +# echo " ================= SFI.PY DELETE SLICE =============" +# sfi.py delete senslab2.avakian_slice + +echo "\r\n" +echo " PYTHON TEST ", $1, $2 diff --git a/sfa/senslab/tests/testSenslab.py b/sfa/senslab/tests/testSenslab.py new file mode 100644 index 00000000..60223051 --- /dev/null +++ b/sfa/senslab/tests/testSenslab.py @@ -0,0 +1,6 @@ +import unittest +import xmlrunner + + +if __name__ == '__main__': + unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))