Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fd0c5b1a authored by Calin Juravle's avatar Calin Juravle
Browse files

Fix otapreopt parameters reading

The code was missing a break in the switch statement and was always
failing the default CHECK.

Also, move the logging to standard error to make it obvious the test
failed (instead of relying on the exit code which can be easily missed).

Test: installd_otapreopt_test
Bug: 71993124
Change-Id: Iaf29ebc9b930981bf3b75c33e63e940139421e1d
parent 0e2c9f52
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -218,6 +218,9 @@ bool OTAPreoptParameters::ReadArgumentsV1(const char** argv) {
    // Set the profile name to the primary apk profile.
    profile_name = "primary.prof";

    // By default we don't have a dex metadata file.
    dex_metadata_path = nullptr;

    return true;
}

@@ -272,6 +275,9 @@ bool OTAPreoptParameters::ReadArgumentsPostV1(uint32_t version, const char** arg
    // Set the profile name to the primary apk profile.
    profile_name = "primary.prof";

    // By default we don't have a dex metadata file.
    dex_metadata_path = nullptr;

    for (size_t param_index = 0; param_index < num_args_actual; ++param_index) {
        const char* param = argv[dexopt_index + 1 + param_index];
        switch (param_index) {
@@ -333,10 +339,13 @@ bool OTAPreoptParameters::ReadArgumentsPostV1(uint32_t version, const char** arg

            case 14:
                dex_metadata_path = ParseNull(param);
                break;

            default:
                CHECK(false) << "Should not get here. Did you call ReadArguments "
                        << "with the right expectation?";
                LOG(FATAL) << "Should not get here. Did you call ReadArguments "
                        << "with the right expectation? index=" << param_index
                        << " num_args=" << num_args_actual;
                return false;
        }
    }

+4 −4
Original line number Diff line number Diff line
@@ -39,8 +39,8 @@ static const char* ParseNull(const char* arg) {
class OTAPreoptTest : public testing::Test {
protected:
    virtual void SetUp() {
        setenv("ANDROID_LOG_TAGS", "*:v", 1);
        android::base::InitLogging(nullptr);
        setenv("ANDROID_LOG_TAGS", "*:f", 1);
        android::base::InitLogging(nullptr, android::base::StderrLogger);
    }

    void verifyPackageParameters(const OTAPreoptParameters& params,
@@ -68,7 +68,7 @@ protected:
        if (version > 1) {
            ASSERT_STREQ(params.se_info, ParseNull(args[i++]));
        } else {
            ASSERT_STREQ(params.se_info, nullptr);
            ASSERT_EQ(params.se_info, nullptr);
        }
        if (version > 2) {
            ASSERT_EQ(params.downgrade, ParseBool(args[i++]));
@@ -88,7 +88,7 @@ protected:
        if (version > 5) {
            ASSERT_STREQ(params.dex_metadata_path, ParseNull(args[i++]));
        } else {
            ASSERT_STREQ(params.dex_metadata_path, nullptr);
            ASSERT_EQ(params.dex_metadata_path, nullptr);
        }
    }