Skip to content

Commit

Permalink
Fix arguments download_hana_assets_from_server
Browse files Browse the repository at this point in the history
Fix how arguments are passed to download_hana_assets_from_server.
Improve package management in hana_installer.
  • Loading branch information
mpagot committed Feb 26, 2025
1 parent a0b0f58 commit f4e8252
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 10 deletions.
2 changes: 1 addition & 1 deletion lib/sles4sap.pm
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ server
=cut

sub download_hana_assets_from_server {
my %params = @_;
my ($self, %params) = @_;
my $target = $params{target} // '/sapinst';
my $nettout = $params{nettout} // 2700;
# Each HANA asset is about 16GB. A ten minute timeout assumes a generous
Expand Down
40 changes: 39 additions & 1 deletion t/17_sles4sap.t
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use Test::More;
use Test::Exception;
use Test::Warnings;
use Test::MockModule;
use List::Util qw(any none);
use testapi;
use sles4sap;

Expand All @@ -17,7 +18,8 @@ sub undef_vars {
INSTANCE_SID
_SECRET_SAP_MASTER_PASSWORD
ASCS_PRODUCT_ID
INSTANCE_ID);
INSTANCE_ID
ASSET_0);
}

subtest '[prepare_swpm]' => sub {
Expand Down Expand Up @@ -181,6 +183,7 @@ subtest '[share_hosts_entry] All args defined' => sub {
set_var('INSTANCE_TYPE', 'Astrid');
$mockObject->share_hosts_entry(virtual_hostname => 'Olivia', virtual_ip => '192.168.1.1', shared_directory_root => '/Peter/Walter');

note("\n --> " . join("\n --> ", @calls));
is $calls[1], 'mkdir -p /Peter/Walter/hosts', "Test 'mkdir' command";
is $calls[2], "echo '192.168.1.1 Olivia' >> /Peter/Walter/hosts/Astrid", "Test 'hosts' file entry";

Expand All @@ -199,6 +202,7 @@ subtest '[share_hosts_entry] Test default values' => sub {

$mockObject->share_hosts_entry();

note("\n --> " . join("\n --> ", @calls));
is $calls[1], 'mkdir -p /sapmnt/hosts', "Test 'mkdir' command";
is $calls[2], "echo '192.168.1.1 Olivia' >> /sapmnt/hosts/Astrid", "Test 'hosts' file entry";
undef_vars();
Expand Down Expand Up @@ -258,4 +262,38 @@ subtest '[get_instance_profile_path]' => sub {
undef_vars();
};

subtest '[fix_path] unsupported protocols' => sub {
my $mockObject = sles4sap->new();
foreach my $protocol (qw(something http ftp)) {
dies_ok { $mockObject->fix_path($protocol . '://somethingelse') } "Die for unsupported protocol $protocol";
}
};

subtest '[fix_path] supported protocols' => sub {
my $mockObject = sles4sap->new();
foreach my $protocol (qw(smb smbfs nfs)) {
my @ret = $mockObject->fix_path($protocol . '://somethingelse/else/other/somefile.someextension');
note("proto:$ret[0] path:$ret[1]");
ok($ret[0] eq 'cifs' or $ret[0] eq 'nfs');
}
};

subtest '[download_hana_assets_from_server]' => sub {
my $mockObject = sles4sap->new();
my $sles4sap = Test::MockModule->new('sles4sap', no_auto => 1);
my @calls;
# Return 1 to simulate no asset lock
$sles4sap->redefine(script_run => sub { push @calls, @_; return 1; });
$sles4sap->redefine(assert_script_run => sub { push @calls, @_; return; });
$sles4sap->redefine(data_url => sub { return 'MY_DOWNLOAD_URL'; });

set_var('ASSET_0', 'Zanzibar');
$mockObject->download_hana_assets_from_server();
undef_vars();
note("\n --> " . join("\n --> ", @calls));

ok((any { /wget.*MY_DOWNLOAD_URL/ } @calls), 'wget call');
};


done_testing;
21 changes: 13 additions & 8 deletions tests/sles4sap/hana_install.pm
Original file line number Diff line number Diff line change
Expand Up @@ -102,14 +102,19 @@ sub run {
my $RAM = $self->get_total_mem();
die "RAM=$RAM. The SUT needs at least 24G of RAM" if $RAM < 24000;

# Check for SAPHanaSR-angi package going to be used
if (get_var('USE_SAP_HANA_SR_ANGI')) {
script_run('[ $(rpm -q SAPHanaSR-doc) ] && rpm -e --nodeps SAPHanaSR-doc');
script_run('[ $(rpm -q SAPHanaSR) ] && rpm -e --nodeps SAPHanaSR');
zypper_call('install SAPHanaSR-angi supportutils-plugin-ha-sap ClusterTools2') if get_var('HA_CLUSTER');
}
else {
zypper_call('install SAPHanaSR SAPHanaSR-doc ClusterTools2') if get_var('HA_CLUSTER');
if (get_var('HA_CLUSTER')) {
my @zypper_in = ('install');
# Check for SAPHanaSR-angi package going to be used
if (get_var('USE_SAP_HANA_SR_ANGI')) {
script_run('[ $(rpm -q SAPHanaSR-doc) ] && rpm -e --nodeps SAPHanaSR-doc');
script_run('[ $(rpm -q SAPHanaSR) ] && rpm -e --nodeps SAPHanaSR');
push @zypper_in, 'SAPHanaSR-angi', 'supportutils-plugin-ha-sap';
}
else {
push @zypper_in, 'SAPHanaSR', 'SAPHanaSR-doc';
}
push @zypper_in, 'ClusterTools2';
zypper_call(join(' ', @zypper_in));
}

# Add host's IP to /etc/hosts
Expand Down

0 comments on commit f4e8252

Please sign in to comment.