Initial Appveryor enablement

This commit is contained in:
GregBestland
2016-03-09 16:54:32 -06:00
parent 467a5c65ba
commit 9ea856459d
4 changed files with 132 additions and 4 deletions

26
appveyor.yml Normal file
View File

@@ -0,0 +1,26 @@
environment:
matrix:
- PYTHON: "C:\\Python27-x64"
cassandra_version: 3.0.5
ci_type: standard
- PYTHON: "C:\\Python34"
cassandra_version: 3.0.5
ci_type: unit
os: Visual Studio 2015
platform:
- x64
install:
- "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
- ps: .\appveyor\appveyor.ps1
build_script:
- cmd: |
"%VS140COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
python setup.py install --no-cython
test_script:
- ps: .\appveyor\run_test.ps1
cache:
- C:\Users\appveyor\.m2
- C:\ProgramData\chocolatey\bin
- C:\ProgramData\chocolatey\lib
- C:\Users\appveyor\jce_policy-1.7.0.zip
- C:\Users\appveyor\jce_policy-1.8.0.zip

66
appveyor/appveyor.ps1 Normal file
View File

@@ -0,0 +1,66 @@
$env:JAVA_HOME="C:\Program Files\Java\jdk1.8.0"
$env:PATH="$($env:JAVA_HOME)\bin;$($env:PATH)"
$env:CCM_PATH="C:\Users\appveyor\ccm"
$env:CASSANDRA_VERSION=$env:cassandra_version
python --version
python -c "import platform; print(platform.architecture())"
# Install Ant
Start-Process cinst -ArgumentList @("-y","ant") -Wait -NoNewWindow
# Workaround for ccm, link ant.exe -> ant.bat
If (!(Test-Path C:\ProgramData\chocolatey\bin\ant.bat)) {
cmd /c mklink C:\ProgramData\chocolatey\bin\ant.bat C:\ProgramData\chocolatey\bin\ant.exe
}
$jce_indicator = "$target\README.txt"
# Install Java Cryptographic Extensions, needed for SSL.
If (!(Test-Path $jce_indicator)) {
$zip = "C:\Users\appveyor\jce_policy-$($env:java_version).zip"
$target = "$($env:JAVA_HOME)\jre\lib\security"
# If this file doesn't exist we know JCE hasn't been installed.
$url = "https://www.dropbox.com/s/po4308hlwulpvep/UnlimitedJCEPolicyJDK7.zip?dl=1"
$extract_folder = "UnlimitedJCEPolicy"
If ($env:java_version -eq "1.8.0") {
$url = "https://www.dropbox.com/s/al1e6e92cjdv7m7/jce_policy-8.zip?dl=1"
$extract_folder = "UnlimitedJCEPolicyJDK8"
}
# Download zip to staging area if it doesn't exist, we do this because
# we extract it to the directory based on the platform and we want to cache
# this file so it can apply to all platforms.
if(!(Test-Path $zip)) {
(new-object System.Net.WebClient).DownloadFile($url, $zip)
}
Add-Type -AssemblyName System.IO.Compression.FileSystem
[System.IO.Compression.ZipFile]::ExtractToDirectory($zip, $target)
$jcePolicyDir = "$target\$extract_folder"
Move-Item $jcePolicyDir\* $target\ -force
Remove-Item $jcePolicyDir
}
# Install Python Dependencies for CCM.
Start-Process python -ArgumentList "-m pip install psutil pyYaml six numpy" -Wait -NoNewWindow
# Clone ccm from git and use master.
If (!(Test-Path $env:CCM_PATH)) {
Start-Process git -ArgumentList "clone https://github.com/pcmanus/ccm.git $($env:CCM_PATH)" -Wait -NoNewWindow
}
# Copy ccm -> ccm.py so windows knows to run it.
If (!(Test-Path $env:CCM_PATH\ccm.py)) {
Copy-Item "$env:CCM_PATH\ccm" "$env:CCM_PATH\ccm.py"
}
$env:PYTHONPATH="$($env:CCM_PATH);$($env:PYTHONPATH)"
$env:PATH="$($env:CCM_PATH);$($env:PATH)"
# Predownload cassandra version for CCM if it isn't already downloaded.
If (!(Test-Path C:\Users\appveyor\.ccm\repository\$env:cassandra_version)) {
Start-Process python -ArgumentList "$($env:CCM_PATH)\ccm.py create -v $($env:cassandra_version) -n 1 predownload" -Wait -NoNewWindow
Start-Process python -ArgumentList "$($env:CCM_PATH)\ccm.py remove predownload" -Wait -NoNewWindow
}
Start-Process python -ArgumentList "-m pip install -r test-requirements.txt" -Wait -NoNewWindow
Start-Process python -ArgumentList "-m pip install nose-ignore-docstring" -Wait -NoNewWindow

35
appveyor/run_test.ps1 Normal file
View File

@@ -0,0 +1,35 @@
Set-ExecutionPolicy Unrestricted
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -force
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser -force
Get-ExecutionPolicy -List
echo $env:Path
echo $env:JAVA_HOME
echo $env:PYTHONPATH
echo $env:CASSANDRA_VERSION
echo $env:ci_type
python --version
python -c "import platform; print(platform.architecture())"
$wc = New-Object 'System.Net.WebClient'
nosetests -s -v --with-ignore-docstrings --with-xunit --xunit-file=unit_results.xml .\tests\unit
echo "uploading unit results"
$wc.UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\unit_results.xml))
if($env:ci_type -eq 'standard' -Or $env:ci_type -eq 'long'){
echo "Running CQLEngine integration tests"
nosetests -s -v --with-ignore-docstrings --with-xunit --xunit-file=cqlengine_results.xml .\tests\integration\cqlengine
$wc.UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\cqlengine_results.xml))
echo "uploading CQLEngine test results"
echo "Running standard integration tests"
nosetests -s -v --with-ignore-docstrings --with-xunit --xunit-file=standard_results.xml .\tests\integration\standard
$wc.UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\standard_results.xml))
echo "uploading standard integration test results"
}
if($env:ci_type -eq 'long'){
nosetests -s -v --with-ignore-docstrings --with-xunit --xunit-file=cqlengine_results.xml .\tests\integration\cqlengine
$wc.UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\cqlengine_results.xml))
echo "uploading standard integration test results"
}
exit 0

View File

@@ -211,10 +211,11 @@ class ConcurrencyTest((unittest.TestCase)):
t = TimedCallableInvoker(our_handler, slowdown=slowdown)
t.start()
results = execute_concurrent(mock_session, statements_and_params, results_generator=True)
self.validate_result_ordering(results)
t.stop()
try:
results = execute_concurrent(mock_session, statements_and_params, results_generator=True)
self.validate_result_ordering(results)
finally:
t.stop()
def validate_result_ordering(self, results):
"""