flags handled using python_gflags

pull/2151/head
Siddharth Rakesh 10 years ago
parent 12c65b1a7e
commit 31014d26aa
  1. 73
      test/cpp/qps/run_perf_db_test.py

@ -39,15 +39,23 @@ import json
import time
import subprocess
import fnmatch
import gflags
CLIENT_ID = '1018396037782-tv81fshn76nemr24uuhuginceb9hni2m.apps.googleusercontent.com'
CLIENT_SECRET = '_HGHXg4DAA59r4w4x8p6ARzD'
GRANT_TYPE = 'http://oauth.net/grant_type/device/1.0'
ACCESS_TOKENS_DIR = '/usr/local/auth_access_tokens'
DEFAULT_ACCESS_TOKENS_DIR = '/usr/local/auth_access_tokens'
AUTH_TOKEN_LINK = 'https://www.googleapis.com/oauth2/v3/token'
GOOGLE_ACCOUNTS_LINK = 'https://accounts.google.com/o/oauth2/device/code'
USER_INFO_LINK = 'https://www.googleapis.com/oauth2/v1/userinfo'
FLAGS = gflags.FLAGS
gflags.DEFINE_string('test', None, 'Name of the test')
gflags.DEFINE_string('email', None, 'gmail id')
gflags.DEFINE_string('server_address', 'localhost:50052', 'Address of the performance database server')
gflags.DEFINE_string('tokens_dir', DEFAULT_ACCESS_TOKENS_DIR, 'Location of the access tokens')
# Fetches JSON reply object, given a url and parameters
def fetchJSON(url, paramDict):
if len(paramDict) == 0:
@ -136,7 +144,7 @@ def refreshAccessToken(refreshToken, userTokFile):
# return fresh access token
return data['access_token']
def reauthenticate():
def reauthenticate(tokensDir):
# Request parameters
paramDict = {'client_id':CLIENT_ID, 'scope':'email profile'}
JSONBody = fetchJSON(GOOGLE_ACCOUNTS_LINK, paramDict)
@ -158,7 +166,7 @@ def reauthenticate():
time.sleep(data['interval'])
# File to write tokens
newUserTokFile = ACCESS_TOKENS_DIR + '/' + getUserId(authData['access_token'])
newUserTokFile = tokensDir + '/' + getUserId(authData['access_token'])
# Write tokens to file
with open(newUserTokFile, "w") as data_file:
@ -168,12 +176,12 @@ def reauthenticate():
return authData['access_token']
# Fetch a working access token given user entered email id; authntication may be required
def getAccessToken(email):
def getAccessToken(email, tokensDir):
# Get unique user id from email address
userId = getUserIdFromEmail(email)
# Token file
userTokFile = ACCESS_TOKENS_DIR + '/' + userId
userTokFile = tokensDir + '/' + userId
accessToken = ''
@ -182,7 +190,7 @@ def getAccessToken(email):
accessToken = useAccessToken(userTokFile)
else:
# User authentication required
accessToken = reauthenticate()
accessToken = reauthenticate(tokensDir)
return accessToken
@ -235,42 +243,51 @@ def getSysInfo():
return sysInfo
def main():
# If tokens directory does not exist, creates it
if not os.path.exists(ACCESS_TOKENS_DIR):
subprocess.call(['sudo', 'mkdir', ACCESS_TOKENS_DIR])
subprocess.call(['sudo', 'chmod', '777', ACCESS_TOKENS_DIR])
def main(argv):
try:
argv = FLAGS(argv)
except Exception, e:
print '%s\\nUsage: %s ARGS\\n%s' % (e, sys.argv[0], FLAGS)
sys.exit(1)
if len(sys.argv) > 1:
test = sys.argv[1]
else:
test = raw_input('Enter the test path/name: ')
tokensDir = FLAGS.tokens_dir
if len(sys.argv) > 2:
email = sys.argv[2]
else:
email = raw_input('Enter your e-mail id: ')
# If tokens directory does not exist, creates it
if not os.path.exists(tokensDir):
os.makedirs(tokensDir)
try:
# Fetch working access token
accessToken = getAccessToken(email)
except Exception, e:
print 'Error in authentication'
accessToken = getAccessToken(FLAGS.email, tokensDir)
except AttributeError:
print '\nError: Please provide email address as an argument\n'
sys.exit(1)
except:
print '\nError in authentication\n'
sys.exit(1)
# Address of the performance database server
serverAddress = 'sidrakesh.mtv.google.corp.com:50052'
serverAddress = FLAGS.server_address
# Get path to test
try:
testPath = findTestPath(test) # Get path to test
testName = testPath.split('/')[-1] # Get test name
testPath = findTestPath(FLAGS.test)
except TypeError:
print '\nError: Please provide test name/path as argument\n'
sys.exit(1)
sysInfo = getSysInfo() # get the system information
# Get name of the test
testName = testPath.split('/')[-1]
# Get the system information
sysInfo = getSysInfo()
try:
print '\nBeginning test:\n'
# Run the test
subprocess.call([testPath, '--report_metrics_db=true', '--access_token='+accessToken, '--test_name='+testName, '--sys_info='+str(sysInfo).strip('[]'), '--server_address='+serverAddress])
except OSError:
print 'Could not execute the test, please check test name'
print 'Could not execute the test'
if __name__ == "__main__":
main()
main(sys.argv)
Loading…
Cancel
Save