Annotation of embedaddon/curl/tests/azure.pm, revision 1.1
1.1 ! misho 1: #***************************************************************************
! 2: # _ _ ____ _
! 3: # Project ___| | | | _ \| |
! 4: # / __| | | | |_) | |
! 5: # | (__| |_| | _ <| |___
! 6: # \___|\___/|_| \_\_____|
! 7: #
! 8: # Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
! 9: # Copyright (C) 2020, Marc Hoersken, <info@marc-hoersken.de>
! 10: #
! 11: # This software is licensed as described in the file COPYING, which
! 12: # you should have received as part of this distribution. The terms
! 13: # are also available at https://curl.haxx.se/docs/copyright.html.
! 14: #
! 15: # You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 16: # copies of the Software, and permit persons to whom the Software is
! 17: # furnished to do so, under the terms of the COPYING file.
! 18: #
! 19: # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 20: # KIND, either express or implied.
! 21: #
! 22: ###########################################################################
! 23:
! 24: use strict;
! 25: use warnings;
! 26:
! 27: use POSIX qw(strftime);
! 28:
! 29: sub azure_check_environment {
! 30: if(defined $ENV{'AZURE_ACCESS_TOKEN'} && $ENV{'AZURE_ACCESS_TOKEN'} &&
! 31: defined $ENV{'AGENT_JOBNAME'} && $ENV{'BUILD_BUILDID'} &&
! 32: defined $ENV{'SYSTEM_TEAMFOUNDATIONCOLLECTIONURI'} &&
! 33: defined $ENV{'SYSTEM_TEAMPROJECTID'}) {
! 34: return 1;
! 35: }
! 36: return 0;
! 37: }
! 38:
! 39: sub azure_create_test_run {
! 40: my $azure_baseurl="$ENV{'SYSTEM_TEAMFOUNDATIONCOLLECTIONURI'}$ENV{'SYSTEM_TEAMPROJECTID'}";
! 41: my $azure_run=`curl --silent --noproxy "*" \\
! 42: --header "Authorization: Bearer $ENV{'AZURE_ACCESS_TOKEN'}" \\
! 43: --header "Content-Type: application/json" \\
! 44: --data "
! 45: {
! 46: 'name': '$ENV{'AGENT_JOBNAME'}',
! 47: 'automated': true,
! 48: 'build': {'id': '$ENV{'BUILD_BUILDID'}'}
! 49: }
! 50: " \\
! 51: "$azure_baseurl/_apis/test/runs?api-version=5.0"`;
! 52: if($azure_run =~ /"id":(\d+)/) {
! 53: return $1;
! 54: }
! 55: return "";
! 56: }
! 57:
! 58: sub azure_create_test_result {
! 59: my ($azure_run_id, $testnum, $testname)=@_;
! 60: $testname =~ s/\\/\\\\/g;
! 61: $testname =~ s/\'/\\\'/g;
! 62: $testname =~ s/\"/\\\"/g;
! 63: my $azure_baseurl="$ENV{'SYSTEM_TEAMFOUNDATIONCOLLECTIONURI'}$ENV{'SYSTEM_TEAMPROJECTID'}";
! 64: my $azure_result=`curl --silent --noproxy "*" \\
! 65: --header "Authorization: Bearer $ENV{'AZURE_ACCESS_TOKEN'}" \\
! 66: --header "Content-Type: application/json" \\
! 67: --data "
! 68: [
! 69: {
! 70: 'build': {'id': '$ENV{'BUILD_BUILDID'}'},
! 71: 'testCase': {'id': $testnum},
! 72: 'testCaseTitle': '$testname',
! 73: 'automatedTestName': 'curl.tests.$testnum',
! 74: 'outcome': 'InProgress'
! 75: }
! 76: ]
! 77: " \\
! 78: "$azure_baseurl/_apis/test/runs/$azure_run_id/results?api-version=5.0"`;
! 79: if($azure_result =~ /\[\{"id":(\d+)/) {
! 80: return $1;
! 81: }
! 82: return "";
! 83: }
! 84:
! 85: sub azure_update_test_result {
! 86: my ($azure_run_id, $azure_result_id, $testnum, $error, $start, $stop)=@_;
! 87: if(!defined $stop) {
! 88: $stop = $start;
! 89: }
! 90: my $azure_start = strftime "%Y-%m-%dT%H:%M:%SZ", gmtime $start;
! 91: my $azure_complete = strftime "%Y-%m-%dT%H:%M:%SZ", gmtime $stop;
! 92: my $azure_duration = sprintf("%.0f", ($stop-$start)*1000);
! 93: my $azure_outcome;
! 94: if($error == 2) {
! 95: $azure_outcome = 'Not applicable';
! 96: }
! 97: elsif($error < 0) {
! 98: $azure_outcome = 'Not executed';
! 99: }
! 100: elsif(!$error) {
! 101: $azure_outcome = 'Passed';
! 102: }
! 103: else {
! 104: $azure_outcome = 'Failed';
! 105: }
! 106: my $azure_baseurl="$ENV{'SYSTEM_TEAMFOUNDATIONCOLLECTIONURI'}$ENV{'SYSTEM_TEAMPROJECTID'}";
! 107: my $azure_result=`curl --silent --noproxy "*" --request PATCH \\
! 108: --header "Authorization: Bearer $ENV{'AZURE_ACCESS_TOKEN'}" \\
! 109: --header "Content-Type: application/json" \\
! 110: --data "
! 111: [
! 112: {
! 113: 'id': $azure_result_id,
! 114: 'outcome': '$azure_outcome',
! 115: 'startedDate': '$azure_start',
! 116: 'completedDate': '$azure_complete',
! 117: 'durationInMs': $azure_duration
! 118: }
! 119: ]
! 120: " \\
! 121: "$azure_baseurl/_apis/test/runs/$azure_run_id/results?api-version=5.0"`;
! 122: if($azure_result =~ /\[\{"id":(\d+)/) {
! 123: return $1;
! 124: }
! 125: return "";
! 126: }
! 127:
! 128: sub azure_update_test_run {
! 129: my ($azure_run_id)=@_;
! 130: my $azure_baseurl="$ENV{'SYSTEM_TEAMFOUNDATIONCOLLECTIONURI'}$ENV{'SYSTEM_TEAMPROJECTID'}";
! 131: my $azure_run=`curl --silent --noproxy "*" --request PATCH \\
! 132: --header "Authorization: Bearer $ENV{'AZURE_ACCESS_TOKEN'}" \\
! 133: --header "Content-Type: application/json" \\
! 134: --data "
! 135: {
! 136: 'state': 'Completed'
! 137: }
! 138: " \\
! 139: "$azure_baseurl/_apis/test/runs/$azure_run_id?api-version=5.0"`;
! 140: if($azure_run =~ /"id":(\d+)/) {
! 141: return $1;
! 142: }
! 143: return "";
! 144: }
! 145:
! 146: 1;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>