Skip to content

Commit 409e7de

Browse files
compute: fix autoscaler tests
1 parent 793e911 commit 409e7de

File tree

1 file changed

+198
-4
lines changed

1 file changed

+198
-4
lines changed

packages/compute/system-test/compute.js

Lines changed: 198 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,19 +96,46 @@ describe('Compute', function() {
9696
var AUTOSCALER_NAME = generateName('autoscaler');
9797
var autoscaler = zone.autoscaler(AUTOSCALER_NAME);
9898

99-
var INSTANCE_GROUP_NAME = generateName('instance-group');
100-
var instanceGroup = zone.instanceGroup(INSTANCE_GROUP_NAME);
99+
var NETWORK_NAME = generateName('network');
100+
var network = compute.network(NETWORK_NAME);
101+
102+
var INSTANCE_TEMPLATE_NAME = generateName('instance-template');
103+
var INSTANCE_GROUP_MANAGER_NAME = generateName('instance-group-manager');
101104

102105
before(function(done) {
103106
async.series([
104-
create(instanceGroup),
107+
create(network, {
108+
range: '10.240.0.0/16'
109+
}),
110+
111+
function(callback) {
112+
createInstanceTemplate(
113+
INSTANCE_TEMPLATE_NAME,
114+
network.formattedName,
115+
callback
116+
);
117+
},
118+
119+
function(callback) {
120+
createInstanceGroupManager(
121+
INSTANCE_GROUP_MANAGER_NAME,
122+
[
123+
'https://www.googleapis.com/compute/v1/projects',
124+
compute.projectId,
125+
'global/instanceTemplates',
126+
INSTANCE_TEMPLATE_NAME
127+
].join('/'),
128+
callback
129+
);
130+
},
131+
105132
create(autoscaler, {
106133
coolDown: 30,
107134
cpu: 80,
108135
loadBalance: 40,
109136
maxReplicas: 5,
110137
minReplicas: 1,
111-
target: INSTANCE_GROUP_NAME
138+
target: INSTANCE_GROUP_MANAGER_NAME
112139
})
113140
], done);
114141
});
@@ -1318,6 +1345,8 @@ describe('Compute', function() {
13181345
deleteUrlMaps,
13191346
deleteServices,
13201347
deleteHttpsHealthChecks,
1348+
deleteInstanceGroupManagers,
1349+
deleteInstanceTemplates,
13211350
deleteTargetInstances,
13221351
deleteAllGcloudTestObjects
13231352
], callback);
@@ -1666,4 +1695,169 @@ describe('Compute', function() {
16661695
});
16671696
});
16681697
}
1698+
1699+
function getInstanceTemplates(callback) {
1700+
compute.request({
1701+
uri: '/global/instanceTemplates',
1702+
qs: {
1703+
filter: 'name eq ' + TESTS_PREFIX + '.*'
1704+
}
1705+
}, callback);
1706+
}
1707+
1708+
function deleteInstanceTemplates(callback) {
1709+
getInstanceTemplates(function(err, resp) {
1710+
if (err) {
1711+
callback(err);
1712+
return;
1713+
}
1714+
1715+
if (!resp.items) {
1716+
callback();
1717+
return;
1718+
}
1719+
1720+
var names = resp.items.map(prop('name'));
1721+
async.each(names, deleteInstanceTemplate, callback);
1722+
});
1723+
}
1724+
1725+
function createInstanceTemplate(name, networkName, callback) {
1726+
compute.request({
1727+
method: 'POST',
1728+
uri: '/global/instanceTemplates',
1729+
json: {
1730+
name: name,
1731+
properties: {
1732+
disks: [
1733+
{
1734+
boot: true,
1735+
mode: 'READ_ONLY',
1736+
initializeParams: {
1737+
diskName: generateName('disk'),
1738+
diskSizeGb: 2,
1739+
diskType: 'pd-standard',
1740+
sourceImage: [
1741+
'projects/centos-cloud/global/images/centos-6-v20150710'
1742+
].join('')
1743+
}
1744+
}
1745+
],
1746+
machineType: 'n1-standard-1',
1747+
networkInterfaces: [
1748+
{
1749+
network: networkName,
1750+
accessConfigs: [
1751+
{
1752+
name: generateName('access_config'),
1753+
type: 'ONE_TO_ONE_NAT'
1754+
}
1755+
]
1756+
}
1757+
]
1758+
}
1759+
}
1760+
}, function(err, resp) {
1761+
if (err) {
1762+
callback(err);
1763+
return;
1764+
}
1765+
1766+
var operation = compute.operation(resp.name);
1767+
operation
1768+
.on('error', callback)
1769+
.on('complete', function() {
1770+
callback();
1771+
});
1772+
});
1773+
}
1774+
1775+
function deleteInstanceTemplate(name, callback) {
1776+
compute.request({
1777+
method: 'DELETE',
1778+
uri: '/global/instanceTemplates/' + name
1779+
}, function(err, resp) {
1780+
if (err) {
1781+
callback(err);
1782+
return;
1783+
}
1784+
1785+
var operation = compute.operation(resp.name);
1786+
operation
1787+
.on('error', callback)
1788+
.on('complete', function() {
1789+
callback();
1790+
});
1791+
});
1792+
}
1793+
1794+
function getInstanceGroupManagers(callback) {
1795+
zone.request({
1796+
uri: '/instanceGroupManagers',
1797+
qs: {
1798+
filter: 'name eq ' + TESTS_PREFIX + '.*'
1799+
}
1800+
}, callback);
1801+
}
1802+
1803+
function deleteInstanceGroupManagers(callback) {
1804+
getInstanceGroupManagers(function(err, resp) {
1805+
if (err) {
1806+
callback(err);
1807+
return;
1808+
}
1809+
1810+
if (!resp.items) {
1811+
callback();
1812+
return;
1813+
}
1814+
1815+
var names = resp.items.map(prop('name'));
1816+
async.each(names, deleteInstanceGroupManager, callback);
1817+
});
1818+
}
1819+
1820+
function createInstanceGroupManager(name, instanceTemplateName, callback) {
1821+
zone.request({
1822+
method: 'POST',
1823+
uri: '/instanceGroupManagers',
1824+
json: {
1825+
baseInstanceName: name.replace(/\W/g, ''),
1826+
name: name,
1827+
targetSize: 1,
1828+
instanceTemplate: instanceTemplateName
1829+
}
1830+
}, function(err, resp) {
1831+
if (err) {
1832+
callback(err);
1833+
return;
1834+
}
1835+
1836+
var operation = zone.operation(resp.name);
1837+
operation
1838+
.on('error', callback)
1839+
.on('complete', function() {
1840+
callback();
1841+
});
1842+
});
1843+
}
1844+
1845+
function deleteInstanceGroupManager(name, callback) {
1846+
zone.request({
1847+
method: 'DELETE',
1848+
uri: '/instanceGroupManagers/' + name
1849+
}, function(err, resp) {
1850+
if (err) {
1851+
callback(err);
1852+
return;
1853+
}
1854+
1855+
var operation = zone.operation(resp.name);
1856+
operation
1857+
.on('error', callback)
1858+
.on('complete', function() {
1859+
callback();
1860+
});
1861+
});
1862+
}
16691863
});

0 commit comments

Comments
 (0)