Skip to content

Commit

Permalink
create var file for template variables (#7511)
Browse files Browse the repository at this point in the history
* create var file for template variables

* fix L0 tests - part 1

* fix L0 tests - part 2. All Windows L0 tests fixed

* use date.now to create a temporary file with random name

* initial fix for linux tests

* use utils.writeFile instead of tasklib.writeFile

* use math.random to create a random and unique file name

* add tests for verifying the var file content being written is correct (#7560)

* add a test
  • Loading branch information
arjgupta authored Jun 29, 2018
1 parent 1c9035a commit 7892a29
Show file tree
Hide file tree
Showing 16 changed files with 218 additions and 192 deletions.
46 changes: 44 additions & 2 deletions Tasks/PackerBuildV0/Tests/L0.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,43 @@ describe('PackerBuild Suite', function() {
done();
});

it('Writes packer var file successfully for windows template', (done:MochaDone) => {
let tp = path.join(__dirname, 'L0Windows.js');
let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
let match1 = 'writing to file C:\\somefolder\\somevarfile.json content: {"subscription_id":"sId","client_id":"spId","client_secret":"spKey","tenant_id":"tenant","object_id":"oId"}';
let match2 = 'writing to file C:\\somefolder\\somevarfile.json content: {"resource_group":"testrg","storage_account":"teststorage","image_publisher":"MicrosoftWindowsServer","image_offer":"WindowsServer","image_sku":"2012-R2-Datacenter","location":"South India","capture_name_prefix":"Release-1","skip_clean":"true","script_relative_path":"dir3\\\\somedir\\\\deploy.ps1","package_path":"C:\\\\dir1\\\\somedir\\\\dir2","package_name":"dir2","script_arguments":"-target \\"subdir 1\\" -shouldFail false"}';
tr.run();

assert(tr.invokedToolCount == 4, 'should have invoked tool four times. actual: ' + tr.invokedToolCount);
assert(tr.stdout.indexOf(match1) > -1, 'correctly writes contents of var file (containing azure spn details)');
assert(tr.stdout.indexOf(match2) > -1, 'correctly writes contents of var file (containing template variables)');

done();
});

it('Runs successfully for custom template', (done:MochaDone) => {
let tp = path.join(__dirname, 'L0CustomTemplate.js');
let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);

tr.run();

assert(tr.invokedToolCount == 4, 'should have invoked tool four times. actual: ' + tr.invokedToolCount);
assert(tr.stderr.length == 0 || tr.errorIssues.length, 'should not have written to stderr');
assert(tr.succeeded, 'task should have succeeded');
done();
});

it('Writes packer var file successfully for custom template', (done:MochaDone) => {
let tp = path.join(__dirname, 'L0CustomTemplate.js');
let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
let match1 = 'writing to file C:\\somefolder\\somevarfile.json content: {"client_id":"abcdef","drop-location":"C:\\\\folder 1\\\\folder-2"}';
let match2 = 'writing to file C:\\somefolder\\somevarfile.json content: {}';

tr.run();

assert(tr.invokedToolCount == 4, 'should have invoked tool four times. actual: ' + tr.invokedToolCount);
assert(tr.stdout.indexOf(match1) > -1, 'correctly writes contents of var file (containing azure spn details)');
assert(tr.stdout.indexOf(match2) > -1, 'correctly writes contents of var file (containing template variables)');

done();
});
Expand All @@ -60,6 +89,21 @@ describe('PackerBuild Suite', function() {
done();
});

it('Var file for packer tool is successfully created for custom image template', (done:MochaDone) => {
let tp = path.join(__dirname, 'L0WindowsCustomImage.js');
let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
let match1 = 'writing to file C:\\somefolder\\somevarfile.json content: {"resource_group":"testrg","storage_account":"teststorage","image_url":"https://bishalpackerimages.blob.core.windows.net/system/Microsoft.Compute/Images/vsts-buildimagetask/Release-1-osDisk.2d175222-b257-405f-a07f-0af4dc4b3dc4.vhd","location":"South India","capture_name_prefix":"Release-1","skip_clean":"true","script_relative_path":"dir3\\\\somedir\\\\deploy.ps1","package_path":"C:\\\\dir1\\\\somedir\\\\dir2","package_name":"dir2","script_arguments":"-target \\"subdir 1\\" -shouldFail false"}';
let match2 = 'writing to file C:\\somefolder\\somevarfile.json content: {"subscription_id":"sId","client_id":"spId","client_secret":"spKey","tenant_id":"tenant","object_id":"oId"}';
tr.run();

assert(tr.invokedToolCount == 4, 'should have invoked tool four times. actual: ' + tr.invokedToolCount);
assert(tr.stdout.indexOf(match1) > -1, 'correctly writes contents of var file (containing azure spn details)');
assert(tr.stdout.indexOf(match2) > -1, 'correctly writes contents of var file (containing template variables)');
assert(tr.succeeded, 'task should have succeeded');

done();
});

it('Creates output variables from packer log', (done:MochaDone) => {
let tp = path.join(__dirname, 'L0Windows.js');
let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
Expand Down Expand Up @@ -109,8 +153,6 @@ describe('PackerBuild Suite', function() {
done();
});



it('Should copy builtin template to temp location for windows template', (done:MochaDone) => {
let tp = path.join(__dirname, 'L0WindowsCustomImage.js');
let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
Expand Down
17 changes: 13 additions & 4 deletions Tasks/PackerBuildV0/Tests/L0CustomTemplate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ let a: any = <any>{
"code": 0,
"stdout": "{ \"some-key\": \"some-value\" }"
},
"packer validate -var client_id=abcdef -var drop-location=C:\\folder 1\\folder-2 C:\\custom.template-fixed.json": {
"packer validate -var-file=C:\\somefolder\\somevarfile.json -var-file=C:\\somefolder\\somevarfile.json C:\\custom.template-fixed.json": {
"code": 0,
"stdout": "Executed Successfully"
},
"packer build -force -var client_id=abcdef -var drop-location=C:\\folder 1\\folder-2 C:\\custom.template-fixed.json": {
"packer build -force -var-file=C:\\somefolder\\somevarfile.json -var-file=C:\\somefolder\\somevarfile.json C:\\custom.template-fixed.json": {
"code": process.env["__packer_build_fails__"] === "true" ? 1 : 0,
"stdout": process.env["__packer_build_fails__"] === "true" ? "packer build failed\r\nsome error" : "Executed Successfully\nOSDiskUri: https://bishalpackerimages.blob.core.windows.net/system/Microsoft.Compute/Images/packer/packer-osDisk.e2e08a75-2d73-49ad-97c2-77f8070b65f5.vhd\nStorageAccountLocation: SouthIndia",
}
Expand All @@ -54,7 +54,7 @@ let a: any = <any>{
};

var ut = require('../src/utilities');
tr.registerMock('./utilities', {
var utMock = {
IsNullOrEmpty : ut.IsNullOrEmpty,
HasItems : ut.HasItems,
StringWritable: ut.StringWritable,
Expand All @@ -70,6 +70,12 @@ tr.registerMock('./utilities', {
console.log('copying ' + source + ' to ' + destination);
}
},
generateTemporaryFilePath: function () {
return "C:\\somefolder\\somevarfile.json";
},
getPackerVarFileContent: function(variables) {
return ut.getPackerVarFileContent(variables);
},
writeFile: function(filePath: string, content: string) {
console.log("writing to file " + filePath + " content: " + content);
},
Expand All @@ -82,7 +88,10 @@ tr.registerMock('./utilities', {
getCurrentDirectory: function() {
return "basedir\\currdir";
}
});
};

tr.registerMock('./utilities', utMock);
tr.registerMock('../utilities', utMock);

tr.setAnswers(a);
tr.run();
21 changes: 15 additions & 6 deletions Tasks/PackerBuildV0/Tests/L0Linux.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,23 +54,23 @@ let a: any = <any>{
"code": 0,
"stdout": "{ \"some-key\": \"some-value\" }"
},
"packer validate -var resource_group=testrg -var storage_account=teststorage -var image_publisher=Canonical -var image_offer=UbuntuServer -var image_sku=14.04.4-LTS -var location=South India -var capture_name_prefix=Release-1 -var skip_clean=true -var script_relative_path=dir3/somedir/deploy.sh -var package_path=/tmp/dir1/somedir/dir2 -var package_name=dir2 -var script_arguments=\"subdir 1\" false -var subscription_id=sId -var client_id=spId -var client_secret=spKey -var tenant_id=tenant -var object_id= /tmp/tempdir/100/default.linux.template-fixed.json": {
"packer validate -var-file=/somefolder/somevarfile.json -var-file=/somefolder/somevarfile.json /tmp/tempdir/100/default.linux.template-fixed.json": {
"code": 0,
"stdout": "Executed Successfully"
},
"packer build -force -var resource_group=testrg -var storage_account=teststorage -var image_publisher=Canonical -var image_offer=UbuntuServer -var image_sku=14.04.4-LTS -var location=South India -var capture_name_prefix=Release-1 -var skip_clean=true -var script_relative_path=dir3/somedir/deploy.sh -var package_path=/tmp/dir1/somedir/dir2 -var package_name=dir2 -var script_arguments=\"subdir 1\" false -var subscription_id=sId -var client_id=spId -var client_secret=spKey -var tenant_id=tenant -var object_id= /tmp/tempdir/100/default.linux.template-fixed.json": {
"packer build -force -var-file=/somefolder/somevarfile.json -var-file=/somefolder/somevarfile.json /tmp/tempdir/100/default.linux.template-fixed.json": {
"code": process.env["__packer_build_fails__"] === "true" ? 1 : 0,
"stdout": process.env["__packer_build_fails__"] === "true" ? "packer build failed\r\nsome error" : "Executed Successfully\nOSDiskUri: https://bishalpackerimages.blob.core.windows.net/system/Microsoft.Compute/Images/packer/packer-osDisk.e2e08a75-2d73-49ad-97c2-77f8070b65f5.vhd\nStorageAccountLocation: SouthIndia",
},
"packer fix -validate=false \\tmp\\tempdir\\100\\default.linux.template.json": {
"code": 0,
"stdout": "Executed Successfully"
},
"packer validate -var resource_group=testrg -var storage_account=teststorage -var image_publisher=Canonical -var image_offer=UbuntuServer -var image_sku=14.04.4-LTS -var location=South India -var capture_name_prefix=Release-1 -var skip_clean=true -var script_relative_path=dir3/somedir/deploy.sh -var package_path=/tmp/dir1/somedir/dir2 -var package_name=dir2 -var script_arguments=\"subdir 1\" false -var subscription_id=sId -var client_id=spId -var client_secret=spKey -var tenant_id=tenant -var object_id= \\tmp\\tempdir\\100\\default.linux.template-fixed.json": {
"packer validate -var-file=/somefolder/somevarfile.json -var-file=/somefolder/somevarfile.json \\tmp\\tempdir\\100\\default.linux.template-fixed.json": {
"code": 0,
"stdout": "Executed Successfully"
},
"packer build -force -var resource_group=testrg -var storage_account=teststorage -var image_publisher=Canonical -var image_offer=UbuntuServer -var image_sku=14.04.4-LTS -var location=South India -var capture_name_prefix=Release-1 -var skip_clean=true -var script_relative_path=dir3/somedir/deploy.sh -var package_path=/tmp/dir1/somedir/dir2 -var package_name=dir2 -var script_arguments=\"subdir 1\" false -var subscription_id=sId -var client_id=spId -var client_secret=spKey -var tenant_id=tenant -var object_id= \\tmp\\tempdir\\100\\default.linux.template-fixed.json": {
"packer build -force -var-file=/somefolder/somevarfile.json -var-file=/somefolder/somevarfile.json \\tmp\\tempdir\\100\\default.linux.template-fixed.json": {
"code": process.env["__packer_build_fails__"] === "true" ? 1 : 0,
"stdout": process.env["__packer_build_fails__"] === "true" ? "packer build failed\r\nsome error" : "Executed Successfully\nOSDiskUri: https://bishalpackerimages.blob.core.windows.net/system/Microsoft.Compute/Images/packer/packer-osDisk.e2e08a75-2d73-49ad-97c2-77f8070b65f5.vhd\nStorageAccountLocation: SouthIndia",
}
Expand All @@ -92,7 +92,7 @@ let a: any = <any>{
};

var ut = require('../src/utilities');
tr.registerMock('./utilities', {
var utMock = {
IsNullOrEmpty : ut.IsNullOrEmpty,
HasItems : ut.HasItems,
StringWritable: ut.StringWritable,
Expand All @@ -104,6 +104,12 @@ tr.registerMock('./utilities', {
copyFile: function(source: string, destination: string) {
console.log('copying ' + source + ' to ' + destination);
},
generateTemporaryFilePath: function () {
return "/somefolder/somevarfile.json";
},
getPackerVarFileContent: function(variables) {
return ut.getPackerVarFileContent(variables);
},
writeFile: function(filePath: string, content: string) {
console.log("writing to file " + filePath + " content: " + content);
},
Expand All @@ -123,7 +129,10 @@ tr.registerMock('./utilities', {
getCurrentDirectory: function() {
return "/basedir/currdir";
}
});
};

tr.registerMock('./utilities', utMock);
tr.registerMock('../utilities', utMock);

tr.setAnswers(a);
tr.run();
Original file line number Diff line number Diff line change
Expand Up @@ -54,23 +54,23 @@ let a: any = <any>{
"code": 0,
"stdout": "{ \"some-key\": \"some-value\" }"
},
"packer validate -var resource_group=testrg -var storage_account=teststorage -var image_publisher=Canonical -var image_offer=UbuntuServer -var image_sku=14.04.4-LTS -var location=South India -var capture_name_prefix=Release-1 -var skip_clean=true -var script_relative_path=dir3/somedir/deploy.sh -var package_path=/tmp/dir1/somedir/dir2 -var package_name=dir2 -var script_arguments=\"subdir 1\" false -var subscription_id=sId -var client_id=spId -var client_secret=spKey -var tenant_id=tenant -var object_id=oId /tmp/tempdir/100/default.linux.template-builderUpdated-fixed.json": {
"packer validate -var-file=/somefolder/somevarfile.json -var-file=/somefolder/somevarfile.json /tmp/tempdir/100/default.linux.template-builderUpdated-fixed.json": {
"code": 0,
"stdout": "Executed Successfully"
},
"packer build -force -var resource_group=testrg -var storage_account=teststorage -var image_publisher=Canonical -var image_offer=UbuntuServer -var image_sku=14.04.4-LTS -var location=South India -var capture_name_prefix=Release-1 -var skip_clean=true -var script_relative_path=dir3/somedir/deploy.sh -var package_path=/tmp/dir1/somedir/dir2 -var package_name=dir2 -var script_arguments=\"subdir 1\" false -var subscription_id=sId -var client_id=spId -var client_secret=spKey -var tenant_id=tenant -var object_id=oId /tmp/tempdir/100/default.linux.template-builderUpdated-fixed.json": {
"packer build -force -var-file=/somefolder/somevarfile.json -var-file=/somefolder/somevarfile.json /tmp/tempdir/100/default.linux.template-builderUpdated-fixed.json": {
"code": process.env["__packer_build_fails__"] === "true" ? 1 : 0,
"stdout": process.env["__packer_build_fails__"] === "true" ? "packer build failed\r\nsome error" : "Executed Successfully\nOSDiskUri: https://bishalpackerimages.blob.core.windows.net/system/Microsoft.Compute/Images/packer/packer-osDisk.e2e08a75-2d73-49ad-97c2-77f8070b65f5.vhd\nStorageAccountLocation: SouthIndia",
},
"packer fix -validate=false \\tmp\\tempdir\\100\\default.linux.template-builderUpdated.json": {
"code": 0,
"stdout": "Executed Successfully"
},
"packer validate -var resource_group=testrg -var storage_account=teststorage -var image_publisher=Canonical -var image_offer=UbuntuServer -var image_sku=14.04.4-LTS -var location=South India -var capture_name_prefix=Release-1 -var skip_clean=true -var script_relative_path=dir3/somedir/deploy.sh -var package_path=/tmp/dir1/somedir/dir2 -var package_name=dir2 -var script_arguments=\"subdir 1\" false -var subscription_id=sId -var client_id=spId -var client_secret=spKey -var tenant_id=tenant -var object_id=oId \\tmp\\tempdir\\100\\default.linux.template-builderUpdated-fixed.json": {
"packer validate -var-file=/somefolder/somevarfile.json -var-file=/somefolder/somevarfile.json \\tmp\\tempdir\\100\\default.linux.template-builderUpdated-fixed.json": {
"code": 0,
"stdout": "Executed Successfully"
},
"packer build -force -var resource_group=testrg -var storage_account=teststorage -var image_publisher=Canonical -var image_offer=UbuntuServer -var image_sku=14.04.4-LTS -var location=South India -var capture_name_prefix=Release-1 -var skip_clean=true -var script_relative_path=dir3/somedir/deploy.sh -var package_path=/tmp/dir1/somedir/dir2 -var package_name=dir2 -var script_arguments=\"subdir 1\" false -var subscription_id=sId -var client_id=spId -var client_secret=spKey -var tenant_id=tenant -var object_id=oId \\tmp\\tempdir\\100\\default.linux.template-builderUpdated-fixed.json": {
"packer build -force -var-file=/somefolder/somevarfile.json -var-file=/somefolder/somevarfile.json \\tmp\\tempdir\\100\\default.linux.template-builderUpdated-fixed.json": {
"code": process.env["__packer_build_fails__"] === "true" ? 1 : 0,
"stdout": process.env["__packer_build_fails__"] === "true" ? "packer build failed\r\nsome error" : "Executed Successfully\nOSDiskUri: https://bishalpackerimages.blob.core.windows.net/system/Microsoft.Compute/Images/packer/packer-osDisk.e2e08a75-2d73-49ad-97c2-77f8070b65f5.vhd\nStorageAccountLocation: SouthIndia",
}
Expand All @@ -92,7 +92,7 @@ let a: any = <any>{
};

var ut = require('../src/utilities');
tr.registerMock('./utilities', {
var utMock = {
IsNullOrEmpty : ut.IsNullOrEmpty,
HasItems : ut.HasItems,
StringWritable: ut.StringWritable,
Expand All @@ -107,6 +107,12 @@ tr.registerMock('./utilities', {
readJsonFile: function(filePath: string) {
return "{\"builders\":[{\"type\":\"azure-arm\"}]}";
},
generateTemporaryFilePath: function () {
return "/somefolder/somevarfile.json";
},
getPackerVarFileContent: function(variables) {
return ut.getPackerVarFileContent(variables);
},
writeFile: function(filePath: string, content: string) {
console.log("writing to file " + filePath + " content: " + content);
},
Expand All @@ -126,7 +132,10 @@ tr.registerMock('./utilities', {
getCurrentDirectory: function() {
return "/basedir/currdir";
}
});
};

tr.registerMock('./utilities', utMock);
tr.registerMock('../utilities', utMock);

tr.setAnswers(a);
tr.run();
Loading

0 comments on commit 7892a29

Please sign in to comment.