Modules: chase API change, use std::chrono::seconds

This commit is contained in:
Adriaan de Groot 2019-08-01 22:59:06 +02:00
parent e2504627aa
commit a0854a999e
8 changed files with 34 additions and 29 deletions

View File

@ -170,7 +170,7 @@ ContextualProcessJob::setConfigurationMap( const QVariantMap& configurationMap )
continue; continue;
} }
CalamaresUtils::CommandList* commands = new CalamaresUtils::CommandList( valueiter.value(), !dontChroot, timeout ); CalamaresUtils::CommandList* commands = new CalamaresUtils::CommandList( valueiter.value(), !dontChroot, std::chrono::seconds( timeout ) );
binding->append( valueString, commands ); binding->append( valueString, commands );
} }

View File

@ -74,8 +74,8 @@ InitcpioJob::exec()
cDebug() << "Updating initramfs with kernel" << m_kernel; cDebug() << "Updating initramfs with kernel" << m_kernel;
auto r = CalamaresUtils::System::instance()->targetEnvCommand( auto r = CalamaresUtils::System::instance()->targetEnvCommand(
{ "mkinitcpio", "-p", m_kernel }, QString(), QString(), 0 ); { "mkinitcpio", "-p", m_kernel }, QString(), QString() /* no timeout , 0 */ );
return r.explainProcess( "mkinitcpio", 10 ); return r.explainProcess( "mkinitcpio", std::chrono::seconds( 10 ) /* fake timeout */ );
} }
void void
@ -89,7 +89,7 @@ InitcpioJob::setConfigurationMap( const QVariantMap& configurationMap )
else if ( m_kernel == "$uname" ) else if ( m_kernel == "$uname" )
{ {
auto r = CalamaresUtils::System::runCommand( auto r = CalamaresUtils::System::runCommand(
CalamaresUtils::System::RunLocation::RunInHost, { "/bin/uname", "-r" }, QString(), QString(), 3 ); CalamaresUtils::System::RunLocation::RunInHost, { "/bin/uname", "-r" }, QString(), QString(), std::chrono::seconds( 3 ) );
if ( r.getExitCode() == 0 ) if ( r.getExitCode() == 0 )
{ {
m_kernel = r.getOutput(); m_kernel = r.getOutput();

View File

@ -63,8 +63,8 @@ InitramfsJob::exec()
// And then do the ACTUAL work. // And then do the ACTUAL work.
auto r = CalamaresUtils::System::instance()->targetEnvCommand( auto r = CalamaresUtils::System::instance()->targetEnvCommand(
{ "update-initramfs", "-k", m_kernel, "-c", "-t" }, QString(), QString(), 0 ); { "update-initramfs", "-k", m_kernel, "-c", "-t" }, QString(), QString() /* no timeout, 0 */ );
return r.explainProcess( "update-initramfs", 10 ); return r.explainProcess( "update-initramfs", std::chrono::seconds( 10 ) /* fake timeout */ );
} }
@ -79,7 +79,7 @@ InitramfsJob::setConfigurationMap( const QVariantMap& configurationMap )
else if ( m_kernel == "$uname" ) else if ( m_kernel == "$uname" )
{ {
auto r = CalamaresUtils::System::runCommand( auto r = CalamaresUtils::System::runCommand(
CalamaresUtils::System::RunLocation::RunInHost, { "/bin/uname", "-r" }, QString(), QString(), 3 ); CalamaresUtils::System::RunLocation::RunInHost, { "/bin/uname", "-r" }, QString(), QString(), std::chrono::seconds( 3 ) );
if ( r.getExitCode() == 0 ) if ( r.getExitCode() == 0 )
{ {
m_kernel = r.getOutput(); m_kernel = r.getOutput();

View File

@ -130,7 +130,7 @@ static bool
setupLuks( const LuksDevice& d ) setupLuks( const LuksDevice& d )
{ {
auto r = CalamaresUtils::System::instance()->targetEnvCommand( auto r = CalamaresUtils::System::instance()->targetEnvCommand(
{ "cryptsetup", "luksAddKey", d.device, keyfile }, QString(), d.passphrase, 15 ); { "cryptsetup", "luksAddKey", d.device, keyfile }, QString(), d.passphrase, std::chrono::seconds( 15 ) );
if ( r.getExitCode() != 0 ) if ( r.getExitCode() != 0 )
{ {
cWarning() << "Could not configure LUKS keyfile on" << d.device << ':' << r.getOutput() << "(exit code" cWarning() << "Could not configure LUKS keyfile on" << d.device << ':' << r.getOutput() << "(exit code"

View File

@ -75,7 +75,7 @@ ShellProcessJob::setConfigurationMap( const QVariantMap& configurationMap )
if ( configurationMap.contains( "script" ) ) if ( configurationMap.contains( "script" ) )
{ {
m_commands = new CalamaresUtils::CommandList( configurationMap.value( "script" ), !dontChroot, timeout ); m_commands = new CalamaresUtils::CommandList( configurationMap.value( "script" ), !dontChroot, std::chrono::seconds( timeout ) );
if ( m_commands->isEmpty() ) if ( m_commands->isEmpty() )
cDebug() << "ShellProcessJob: \"script\" contains no commands for" << moduleInstanceKey(); cDebug() << "ShellProcessJob: \"script\" contains no commands for" << moduleInstanceKey();
} }

View File

@ -34,6 +34,8 @@
QTEST_GUILESS_MAIN( ShellProcessTests ) QTEST_GUILESS_MAIN( ShellProcessTests )
using CommandList = CalamaresUtils::CommandList; using CommandList = CalamaresUtils::CommandList;
using std::operator""s;
ShellProcessTests::ShellProcessTests() ShellProcessTests::ShellProcessTests()
{ {
@ -68,8 +70,9 @@ ShellProcessTests::testProcessListSampleConfig()
CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) );
QVERIFY( !cl.isEmpty() ); QVERIFY( !cl.isEmpty() );
QCOMPARE( cl.count(), 3 ); QCOMPARE( cl.count(), 3 );
QCOMPARE( cl.at(0).timeout(), -1 );
QCOMPARE( cl.at(2).timeout(), 3600 ); // slowloris QCOMPARE( cl.at(0).timeout(), CalamaresUtils::CommandLine::TimeoutNotSet() );
QCOMPARE( cl.at(2).timeout(), 3600s ); // slowloris
} }
void ShellProcessTests::testProcessListFromList() void ShellProcessTests::testProcessListFromList()
@ -105,9 +108,10 @@ script: "ls /tmp"
)" ); )" );
CommandList cl( CommandList cl(
CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) );
QVERIFY( !cl.isEmpty() ); QVERIFY( !cl.isEmpty() );
QCOMPARE( cl.count(), 1 ); QCOMPARE( cl.count(), 1 );
QCOMPARE( cl.at(0).timeout(), 10 ); QCOMPARE( cl.at(0).timeout(), 10s );
QCOMPARE( cl.at(0).command(), QStringLiteral( "ls /tmp" ) ); QCOMPARE( cl.at(0).command(), QStringLiteral( "ls /tmp" ) );
// Not a string // Not a string
@ -118,7 +122,6 @@ script: false
CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) );
QVERIFY( cl1.isEmpty() ); QVERIFY( cl1.isEmpty() );
QCOMPARE( cl1.count(), 0 ); QCOMPARE( cl1.count(), 0 );
} }
void ShellProcessTests::testProcessFromObject() void ShellProcessTests::testProcessFromObject()
@ -130,9 +133,10 @@ script:
)" ); )" );
CommandList cl( CommandList cl(
CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) );
QVERIFY( !cl.isEmpty() ); QVERIFY( !cl.isEmpty() );
QCOMPARE( cl.count(), 1 ); QCOMPARE( cl.count(), 1 );
QCOMPARE( cl.at(0).timeout(), 20 ); QCOMPARE( cl.at(0).timeout(), 20s );
QCOMPARE( cl.at(0).command(), QStringLiteral( "ls /tmp" ) ); QCOMPARE( cl.at(0).command(), QStringLiteral( "ls /tmp" ) );
} }
@ -148,9 +152,9 @@ script:
CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) );
QVERIFY( !cl.isEmpty() ); QVERIFY( !cl.isEmpty() );
QCOMPARE( cl.count(), 2 ); QCOMPARE( cl.count(), 2 );
QCOMPARE( cl.at(0).timeout(), 12 ); QCOMPARE( cl.at(0).timeout(), 12s );
QCOMPARE( cl.at(0).command(), QStringLiteral( "ls /tmp" ) ); QCOMPARE( cl.at(0).command(), QStringLiteral( "ls /tmp" ) );
QCOMPARE( cl.at(1).timeout(), -1 ); // not set QCOMPARE( cl.at(1).timeout(), CalamaresUtils::CommandLine::TimeoutNotSet() ); // not set
} }
void ShellProcessTests::testRootSubstitution() void ShellProcessTests::testRootSubstitution()
@ -182,30 +186,31 @@ script:
QVERIFY( gs != nullptr ); QVERIFY( gs != nullptr );
qDebug() << "Expect WARNING, ERROR, WARNING"; qDebug() << "Expect WARNING, ERROR, WARNING";
// Doesn't use @@ROOT@@, so no failures // Doesn't use @@ROOT@@, so no failures
QVERIFY( bool(CommandList(plainScript, false, 10 ).run()) ); QVERIFY( bool(CommandList(plainScript, false, 10s ).run()) );
// Doesn't use @@ROOT@@, but does chroot, so fails // Doesn't use @@ROOT@@, but does chroot, so fails
QVERIFY( !bool(CommandList(plainScript, true, 10 ).run()) ); QVERIFY( !bool(CommandList(plainScript, true, 10s ).run()) );
// Does use @@ROOT@@, which is not set, so fails // Does use @@ROOT@@, which is not set, so fails
QVERIFY( !bool(CommandList(rootScript, false, 10 ).run()) ); QVERIFY( !bool(CommandList(rootScript, false, 10s ).run()) );
// .. fails for two reasons // .. fails for two reasons
QVERIFY( !bool(CommandList(rootScript, true, 10 ).run()) ); QVERIFY( !bool(CommandList(rootScript, true, 10s ).run()) );
gs->insert( "rootMountPoint", "/tmp" ); gs->insert( "rootMountPoint", "/tmp" );
// Now that the root is set, two variants work .. still can't // Now that the root is set, two variants work .. still can't
// chroot, unless the rootMountPoint contains a full system, // chroot, unless the rootMountPoint contains a full system,
// *and* we're allowed to chroot (ie. running tests as root). // *and* we're allowed to chroot (ie. running tests as root).
qDebug() << "Expect no output."; qDebug() << "Expect no output.";
QVERIFY( bool(CommandList(plainScript, false, 10 ).run()) ); QVERIFY( bool(CommandList(plainScript, false, 10s ).run()) );
QVERIFY( bool(CommandList(rootScript, false, 10 ).run()) ); QVERIFY( bool(CommandList(rootScript, false, 10s ).run()) );
qDebug() << "Expect ERROR"; qDebug() << "Expect ERROR";
// But no user set yet // But no user set yet
QVERIFY( !bool(CommandList(userScript, false, 10 ).run()) ); QVERIFY( !bool(CommandList(userScript, false, 10s ).run()) );
// Now play dangerous games with shell expansion // Now play dangerous games with shell expansion
gs->insert( "username", "`id -u`" ); gs->insert( "username", "`id -u`" );
QVERIFY( bool(CommandList(userScript, false, 10 ).run()) ); QVERIFY( bool(CommandList(userScript, false, 10s ).run()) );
} }

View File

@ -125,7 +125,7 @@ sed -i "s,URI =.*,URI = http://releases.neon.kde.org/meta-release/${MACHINE_ID},
sed -i "s,URI_LTS =.*,URI_LTS = http://releases.neon.kde.org/meta-release-lts/${MACHINE_ID}," /etc/update-manager/meta-release sed -i "s,URI_LTS =.*,URI_LTS = http://releases.neon.kde.org/meta-release-lts/${MACHINE_ID}," /etc/update-manager/meta-release
true true
)x"), )x"),
1); std::chrono::seconds( 1 ) );
if ( r == 0 ) if ( r == 0 )
return Calamares::JobResult::ok(); return Calamares::JobResult::ok();

View File

@ -158,7 +158,7 @@ CreateUserJob::exec()
if ( commandResult.getExitCode() ) if ( commandResult.getExitCode() )
{ {
cError() << "useradd failed" << commandResult.getExitCode(); cError() << "useradd failed" << commandResult.getExitCode();
return commandResult.explainProcess( useradd, 10 /* bogus timeout */ ); return commandResult.explainProcess( useradd, std::chrono::seconds( 10 ) /* bogus timeout */ );
} }
commandResult = CalamaresUtils::System::instance()->targetEnvCommand( commandResult = CalamaresUtils::System::instance()->targetEnvCommand(
@ -166,7 +166,7 @@ CreateUserJob::exec()
if ( commandResult.getExitCode() ) if ( commandResult.getExitCode() )
{ {
cError() << "usermod failed" << commandResult.getExitCode(); cError() << "usermod failed" << commandResult.getExitCode();
return commandResult.explainProcess( "usermod", 10 ); return commandResult.explainProcess( "usermod", std::chrono::seconds( 10 ) /* bogus timeout */ );
} }
QString userGroup = QString( "%1:%2" ).arg( m_userName ).arg( m_userName ); QString userGroup = QString( "%1:%2" ).arg( m_userName ).arg( m_userName );
@ -176,7 +176,7 @@ CreateUserJob::exec()
if ( commandResult.getExitCode() ) if ( commandResult.getExitCode() )
{ {
cError() << "chown failed" << commandResult.getExitCode(); cError() << "chown failed" << commandResult.getExitCode();
return commandResult.explainProcess( "chown", 10 ); return commandResult.explainProcess( "chown", std::chrono::seconds( 10 ) /* bogus timeout */ );
} }
return Calamares::JobResult::ok(); return Calamares::JobResult::ok();