blob: 52321f5b92dfa261f2c4d3eea552122d91da084a [file] [log] [blame]
#!perl
use strict;
use warnings;
use Test;
BEGIN {
plan tests => 7 + ($> == 0 ? 8 : 0);
}
use SCST::SCST;
sub getScstThreadCount {
my $SCST = shift;
my ($scstAttributes, $errorString) = $SCST->scstAttributes();
my $threadHash = $scstAttributes->{'threads'};
return exists($threadHash->{'keys'}) ? $threadHash->{'keys'}->{'0'}->{'value'} : $threadHash->{'value'};
}
my $_DEBUG_ = 0;
my $SCST = eval { new SCST::SCST($_DEBUG_) };
die("Creation of SCST object failed") if (!defined($SCST));
# Missing `attribute` and `value` arguments.
ok($SCST->setScstAttribute(), 1);
# `attribute` argument is an empty string.
ok($SCST->setScstAttribute(''), 1);
# `attribute` argument is not an existing attribute and the `value` argument is
# missing.
ok($SCST->setScstAttribute('no-such-attribute'), 1);
# `attribute` argument is not an existing attribute.
ok($SCST->setScstAttribute('no-such-attribute', '1'),
$SCST->SCST_C_BAD_ATTRIBUTES);
# Attempt to modify a read-only attribute.
ok($SCST->setScstAttribute('last_sysfs_mgmt_res', '1'),
$SCST->SCST_C_ATTRIBUTE_STATIC);
my $threads = getScstThreadCount($SCST);
ok(ref(\$threads), "SCALAR");
ok(defined($threads));
# $> represents the effective user ID of this process.
if ($> == 0) {
ok($SCST->setScstAttribute('threads', $threads + 1), 0);
ok(getScstThreadCount($SCST), $threads + 1);
ok($SCST->setScstAttribute('threads', $threads), 0);
ok(getScstThreadCount($SCST), $threads);
ok($SCST->setScstAttribute('measure_latency', undef), 1);
ok($SCST->setScstAttribute('measure_latency', ""),
$SCST->SCST_C_SETATTR_FAIL);
ok($SCST->setScstAttribute('measure_latency', "."),
$SCST->SCST_C_SETATTR_FAIL);
ok($SCST->setScstAttribute('measure_latency', "0"), 0);
}