forked from os-autoinst/os-autoinst-distri-opensuse
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path28_sdaf_networking.t
150 lines (125 loc) · 7.09 KB
/
28_sdaf_networking.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
use strict;
use warnings;
use Test::Mock::Time;
use Test::More;
use Test::Exception;
use Test::Warnings;
use Test::MockModule;
use testapi;
use Data::Dumper;
use sles4sap::sap_deployment_automation_framework::networking;
sub unset_vars {
set_var($_, undef) foreach (
'SDAF_TFSTATE_STORAGE_ACCOUNT', 'SDAF_DEPLOYER_RESOURCE_GROUP', 'SDAF_DEPLOYER_VNET_CODE'
);
}
subtest '[calculate_subnets] ' => sub {
my %network_data = %{calculate_subnets()};
note("-> Calculated network space:\n" . Dumper(%network_data));
foreach (
'admin_subnet_address_prefix',
'db_subnet_address_prefix',
'app_subnet_address_prefix',
'web_subnet_address_prefix',
'network_address_space') {
ok(defined($network_data{$_}), "Network data contains '$_'");
}
};
subtest '[assign_address_space] ' => sub {
my $mocklib = Test::MockModule->new('sles4sap::sap_deployment_automation_framework::networking', no_auto => 1);
$mocklib->redefine(az_network_vnet_get => sub { return ['optimus'] });
$mocklib->redefine(assign_defined_network => sub { return 'bumblebee' });
$mocklib->redefine(create_new_address_space => sub { return 'cliffjumper' });
set_var('SDAF_DEPLOYER_VNET_CODE', 'Decepticons');
set_var('SDAF_DEPLOYER_RESOURCE_GROUP', 'Autobots');
is assign_address_space(networks_older_than => 'yesterday'), 'bumblebee', 'Return already existing network';
$mocklib->redefine(assign_defined_network => sub { return });
is assign_address_space(networks_older_than => 'yesterday'), 'cliffjumper', 'Return newly created network';
unset_vars();
};
subtest '[assign_defined_network] ' => sub {
my $mocklib = Test::MockModule->new('sles4sap::sap_deployment_automation_framework::networking', no_auto => 1);
# mock assign_address_space
$mocklib->redefine(az_network_vnet_get => sub { return ['optimus'] });
$mocklib->redefine(create_new_address_space => sub { return });
# mock assign_defined_network
$mocklib->redefine(record_info => sub { record_info => sub { note(join(' ', 'RECORD_INFO -->', @_)); } });
$mocklib->redefine(list_expired_files => sub { return ('prime') });
$mocklib->redefine(deployer_peering_exists => sub { return });
$mocklib->redefine(acquire_network_file_lease => sub { return 'yes' });
set_var('SDAF_DEPLOYER_VNET_CODE', 'Decepticons');
set_var('SDAF_DEPLOYER_RESOURCE_GROUP', 'Autobots');
is assign_address_space(networks_older_than => 'yesterday'), 'prime/26',
'Return network space if peering exists and lease was acquired';
$mocklib->redefine(acquire_network_file_lease => sub { return });
is assign_address_space(networks_older_than => 'yesterday'), undef, 'Return undef if lease was not acquired';
$mocklib->redefine(deployer_peering_exists => sub { return 'yeees' });
is assign_address_space(networks_older_than => 'yesterday'), undef, 'Return undef if there is existing peering present';
unset_vars();
dies_ok { assign_address_space(networks_older_than => 'yesterday') } 'Fail with "deployer_vnet_name" undefined';
};
subtest '[acquire_network_file_lease]' => sub {
my $mocklib = Test::MockModule->new('sles4sap::sap_deployment_automation_framework::networking', no_auto => 1);
# mock assign_address_space
$mocklib->redefine(az_network_vnet_get => sub { return ['optimus'] });
$mocklib->redefine(create_new_address_space => sub { return });
$mocklib->redefine(deployer_peering_exists => sub { return });
# mock assign_defined_network
$mocklib->redefine(record_info => sub { record_info => sub { note(join(' ', 'RECORD_INFO -->', @_)); } });
$mocklib->redefine(list_expired_files => sub { return ('prime') });
$mocklib->redefine(deployer_peering_exists => sub { return });
# mock acquire_network_file_lease
$mocklib->redefine(az_storage_blob_lease_acquire => sub { return '1984' });
$mocklib->redefine(az_storage_blob_update => sub { return '0' });
set_var('SDAF_DEPLOYER_VNET_CODE', 'Decepticons');
set_var('SDAF_DEPLOYER_RESOURCE_GROUP', 'Autobots');
set_var('SDAF_TFSTATE_STORAGE_ACCOUNT', 'Nebulans');
is assign_address_space(networks_older_than => 'yesterday'), 'prime/26',
'Check if assign_defined_network() calls acquire_network_file_lease() correctly';
$mocklib->redefine(az_storage_blob_lease_acquire => sub { return });
is assign_address_space(networks_older_than => 'yesterday'), undef,
'Return "undef" if file lease was nto acquired';
unset_vars();
};
subtest '[create_new_address_space] ' => sub {
my $mocklib = Test::MockModule->new('sles4sap::sap_deployment_automation_framework::networking', no_auto => 1);
# mock assign_address_space
$mocklib->redefine(az_network_vnet_get => sub { return ['optimus'] });
$mocklib->redefine(assign_defined_network => sub { return });
# mock create_new_address_space
$mocklib->redefine(record_info => sub { record_info => sub { note(join(' ', 'RECORD_INFO -->', @_)); } });
$mocklib->redefine(calculate_net_addr_space => sub { return '127.0.0.1'; });
$mocklib->redefine(list_network_lease_files => sub { return []; });
$mocklib->redefine(create_lease_file => sub { return; });
$mocklib->redefine(deployer_peering_exists => sub { return; });
set_var('SDAF_DEPLOYER_VNET_CODE', 'Decepticons');
set_var('SDAF_DEPLOYER_RESOURCE_GROUP', 'Autobots');
is assign_address_space(networks_older_than => 'yesterday'), '127.0.0.1/26',
'Return address space created by create_new_address_space() function';
$mocklib->redefine(deployer_peering_exists => sub { return 'yes'; });
dies_ok { assign_address_space(networks_older_than => 'yesterday') }
'Die if address space pool runs out - all address peerings assigned.';
$mocklib->redefine(list_network_lease_files => sub { return ['Megatron']; });
dies_ok { assign_address_space(networks_older_than => 'yesterday') } 'Die if address space pool runs out - all files already created.';
unset_vars();
};
subtest '[list_expired_files] ' => sub {
my $mocklib = Test::MockModule->new('sles4sap::sap_deployment_automation_framework::networking', no_auto => 1);
# mock assign_address_space
$mocklib->redefine(az_network_vnet_get => sub { return ['optimus'] });
$mocklib->redefine(create_new_address_space => sub { return 1 });
# mock assign_defined_network
$mocklib->redefine(record_info => sub { record_info => sub { note(join(' ', 'RECORD_INFO -->', @_)); } });
$mocklib->redefine(deployer_peering_exists => sub { return });
$mocklib->redefine(acquire_network_file_lease => sub { return 1 });
$mocklib->redefine(az_storage_blob_list => sub { return [
{network => 'old_network_file', last_modified => '2022-09-23T13:44:42+02:00'},
{network => 'new_network_file', last_modified => '2029-09-23T13:44:42+02:00'}
] });
set_var('SDAF_DEPLOYER_VNET_CODE', 'Decepticons');
set_var('SDAF_DEPLOYER_RESOURCE_GROUP', 'Autobots');
set_var('SDAF_TFSTATE_STORAGE_ACCOUNT', 'Nebulans');
is assign_address_space(networks_older_than => '30'), 'old_network_file/26', 'Return only old network files';
unset_vars();
};
done_testing;