import sys;
version = str(sys.version[0])
print('Python Version: ' + version)
if version == '2':
print('This script requires python3')
sys.exit(0)
#Only run this once
import os;os.chdir('../')
Python Version: 3
def getVersion(env):
java_var = {}
with open(os.path.join(os.environ[env],'release'), 'r') as foil:
for line in [x for x in foil if '=' in x]:
name, value = line.split('=',1)
java_var[name.strip().replace('"','')] = value.strip().replace('"','')
return java_var
def getMajorVersion(env):
return int(getVersion(env)['JAVA_VERSION'].split('.')[1])
print('JAVA_HOME: ' + str(getVersion('JAVA_HOME')['JAVA_VERSION']))
print('JAVA7_HOME: ' + str(getVersion('JAVA7_HOME')['JAVA_VERSION']))
if getMajorVersion('JAVA_HOME') != 8:
print('Cryptoguard requires Java 8 JDK')
sys.exit(0)
if getMajorVersion('JAVA7_HOME') != 7:
print('Cryptoguard requires access to Java 7 JDK')
sys.exit(0)
JAVA_HOME: 1.8.0_252 JAVA7_HOME: 1.7.0
%matplotlib notebook
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patch
sys.path.append('../')
import cryptosouple as cryptoguard
saveFigs = False
plotNum = 0
def getBaseFig():
global plotNum
plotNum = plotNum + 1
return plt.figure(plotNum)
def getFig():
return getBaseFig().add_subplot(111)
liveTests, skippedTests, grouping = cryptoguard.TestUtils.getHelpTests()
groupLive = sum([grouping[x]['Active'] for x in grouping.keys()])
groupSkip = sum([grouping[x]['Skipped'] for x in grouping.keys()])
grouping['Other'] = {
'Active':liveTests - groupLive,
'Skipped':skippedTests - groupSkip
}
activeTests = [int(grouping[x]['Active']) for x in grouping.keys()]
def func(pct, allvals):
absolute = int(pct/100.*np.sum(allvals))
return "{:.1f}%: ({:d} Tests)".format(pct, absolute)
axss = getFig()
wedges, texts, autotexts = axss.pie(activeTests,
labels=grouping.keys(),
autopct=lambda pct: func(pct, activeTests),
shadow=True,
startangle=0)
totalTests = [int(grouping[x]['Active']) + int(grouping[x]['Skipped']) for x in grouping.keys()]
def func(pct, allvals):
absolute = int(pct/100.*np.sum(allvals))
return "{:.1f}%: ({:d} Tests)".format(pct, absolute)
axss = getFig()
wedges, texts, autotexts = axss.pie(totalTests,
labels=grouping.keys(),
autopct=lambda pct: func(pct, totalTests),
shadow=True,
startangle=0)
cryptoguard.TestUtils.test(passedtests='EntryPointTest_APK.main_TestableApk_Default')
Running the test: EntryPointTest_APK.main_TestableApk_Default ========================= Passed
#Running the tests
streamTests = False
testResults = cryptoguard.TestUtils.tests()
Cleaning the project ========================= Cleaning the project using | ./gradlew clean | Removing the Generated files Removing the build file Successful Custom command spotlessApply ========================= Building the project using | ./gradlew spotlessApply| Successful | 6 (s) Building the project ========================= Building the project using | ./gradlew clean build -x test | Successful | 14 (s) Copying the jar file to the current directory | Successful Running all of the available tests. ========================= Custom command test ========================= Building the project using | ./gradlew test| The build broke, exiting now
An exception has occurred, use %tb to see the full traceback. SystemExit: 0
replica = {
'APK': {},
'JAR': {},
'JAVA': {},
'SOURCE': {},
'CLASS': {},
'OTHER':{}
}
#results = {
#'APK': {
#'Pass':[
#{
#'name': name,
#'timeTaken':time,
#'timesReRun':timeReRun
#},
#],
#'Fail':[
#{
#'name': name,
#'timeTaken':time,
#'timesReRun':timeReRun
#},
#],
#'Skip':[
#{
#'name': name,
#'timeTaken':time,
#'timesReRun':timeReRun
#},
#]
#}
#},
for key, value in testResults.items():
passArr = [int(x['timeTaken']) for x in value['Pass']]
replica[key]['PassCount'] = len(passArr)
replica[key]['PassTime'] = sum(passArr)
failArr = [int(x['timeTaken']) for x in value['Fail']]
replica[key]['FailCount'] = len(failArr)
replica[key]['FailTime'] = sum(failArr)
replica[key]['Skipped'] = len([x for x in value['Skip']])
totalTime = [int(replica[x]['PassTime'] + replica[x]['FailTime']) for x in replica.keys()]
def func(pct, allvals):
absolute = int(pct/100.*np.sum(allvals))
return "{:d} s".format(absolute)
axss = getFig()
wedges, texts, autotexts = axss.pie(totalTime,
labels=replica.keys(),
autopct=lambda pct: func(pct, totalTime),
shadow=True,
startangle=0)
totalCounts = [int(replica[x]['PassCount'] + replica[x]['FailCount']) for x in replica.keys()]
def func(pct, allvals):
absolute = int(pct/100.*np.sum(allvals))
return "{:d} tests".format(absolute)
axss = getFig()
wedges, texts, autotexts = axss.pie(totalCounts,
labels=replica.keys(),
autopct=lambda pct: func(pct, totalCounts),
shadow=True,
startangle=0)
groups = np.arange(len(replica.keys()))
groupwidth = .2
trend = 50
rangeLine = range(0, 100)
Passed = [float(replica[x]['PassTime']) for x in replica.keys()]
#ant.reverse()
Failed = [float(replica[x]['FailTime']) for x in replica.keys()]
#sbt.reverse()
ax = getFig()
plt.bar(groups + (groupwidth*0), Failed, color='red', width=groupwidth, label='Failed')
plt.bar(groups + (groupwidth*1), Passed, color='green', width=groupwidth, label='Passed')
plt.legend(loc='best')
ax.set_title("Time taken for test type")
ax.set_xticks([x + groupwidth*1.5 for x in np.arange(6)])
ax.set_xticklabels(replica.keys())
ax.set_xlabel('Test Type')
ax.set_ylabel('Time Taken (s)')
plt.show()
if saveFigs:
plt.savefig('Resources/Imgs/BuildToolTrend.png')
groups = np.arange(len(replica.keys()))
groupwidth = .2
trend = 50
rangeLine = range(0, 100)
Passed = [int(replica[x]['PassCount']) for x in replica.keys()]
#ant.reverse()
Skipped = [int(replica[x]['Skipped']) for x in replica.keys()]
#sbt.reverse()
Failed = [int(replica[x]['FailCount']) for x in replica.keys()]
#sbt.reverse()
ax = getFig()
plt.bar(groups + (groupwidth*0), Failed, color='red', width=groupwidth, label='Failed')
plt.bar(groups + (groupwidth*1), Skipped, color='yellow', width=groupwidth, label='Skipped')
plt.bar(groups + (groupwidth*2), Passed, color='green', width=groupwidth, label='Passed')
plt.legend(loc='best')
ax.set_title("Test Count for test type")
ax.set_xticks([x + groupwidth*1.5 for x in np.arange(6)])
ax.set_xticklabels(replica.keys())
ax.set_xlabel('Test Type')
ax.set_ylabel('Test counts')
plt.show()
if saveFigs:
plt.savefig('Resources/Imgs/BuildToolTrend.png')
groups = np.arange(len(replica.keys()))
groupwidth = .2
trend = 50
rangeLine = range(0, 100)
def smartDiv(x,y):
if y == 0:
y = 1
return x/y
Passed = [int(smartDiv(replica[x]['PassTime'],replica[x]['PassCount'])) for x in replica.keys()]
#ant.reverse()
Failed = [int(smartDiv(replica[x]['FailTime'],replica[x]['FailCount'])) for x in replica.keys()]
#sbt.reverse()
ax = getFig()
plt.bar(groups + (groupwidth*0), Failed, color='red', width=groupwidth, label='Failed')
plt.bar(groups + (groupwidth*2), Passed, color='green', width=groupwidth, label='Passed')
plt.legend(loc='best')
ax.set_title("Test Count for test type")
ax.set_xticks([x + groupwidth*1.5 for x in np.arange(6)])
ax.set_xticklabels(replica.keys())
ax.set_xlabel('Test Type')
ax.set_ylabel('Test counts')
plt.show()
if saveFigs:
plt.savefig('Resources/Imgs/BuildToolTrend.png')