blob: 4a365dec962163f0c1ca90707439ed32792dd67c [file] [log] [blame]
Calin Juravledba72d82021-06-25 15:34:09 -07001/*
2 * Copyright (C) 2021 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include "app_info.h"
18
19#include <vector>
20
21#include "gtest/gtest.h"
22
23namespace art {
24
25TEST(AppInfoTest, RegisterAppInfo) {
26 AppInfo app_info;
27 app_info.RegisterAppInfo(
28 "package_name",
29 std::vector<std::string>({"code_location"}),
30 "",
31 "",
32 AppInfo::CodeType::kPrimaryApk);
33
34 std::string filter;
35 std::string reason;
36 app_info.GetPrimaryApkOptimizationStatus(&filter, &reason);
37
38 // Odex status was not registered.
39 ASSERT_EQ(filter, "unknown");
40 ASSERT_EQ(reason, "unknown");
41}
42
43TEST(AppInfoTest, RegisterAppInfoWithOdexStatus) {
44 AppInfo app_info;
45 app_info.RegisterAppInfo(
46 "package_name",
47 std::vector<std::string>({"code_location"}),
48 "",
49 "",
50 AppInfo::CodeType::kPrimaryApk);
51 app_info.RegisterOdexStatus(
52 "code_location",
53 "filter",
54 "reason",
55 "odex_status");
56
57 std::string filter;
58 std::string reason;
59 app_info.GetPrimaryApkOptimizationStatus(&filter, &reason);
60
61 ASSERT_EQ(filter, "filter");
62 ASSERT_EQ(reason, "reason");
63}
64
65TEST(AppInfoTest, RegisterAppInfoWithOdexStatusMultiplePrimary) {
66 AppInfo app_info;
67 app_info.RegisterOdexStatus(
68 "code_location",
69 "filter",
70 "reason",
71 "odex_status");
72 app_info.RegisterOdexStatus(
73 "code_location2",
74 "filter2",
75 "reason2",
76 "odex_status");
77 app_info.RegisterAppInfo(
78 "package_name",
79 std::vector<std::string>({"code_location"}),
80 "",
81 "",
82 AppInfo::CodeType::kPrimaryApk);
83
84 std::string filter;
85 std::string reason;
86 app_info.GetPrimaryApkOptimizationStatus(&filter, &reason);
87
88 // The optimization status should be the one of the first apk.
89 ASSERT_EQ(filter, "filter");
90 ASSERT_EQ(reason, "reason");
91}
92
93TEST(AppInfoTest, RegisterAppInfoWithOdexStatusNoPrimary) {
94 AppInfo app_info;
95
96 // Check that the status is not known in an empty app_info.
97 std::string filter;
98 std::string reason;
99 app_info.GetPrimaryApkOptimizationStatus(&filter, &reason);
100
101 // Register a split.s
102 app_info.RegisterAppInfo(
103 "package_name",
104 std::vector<std::string>({"code_location"}),
105 "",
106 "",
107 AppInfo::CodeType::kSplitApk);
108 app_info.RegisterOdexStatus(
109 "code_location",
110 "filter",
111 "reason",
112 "odex_status");
113
114
115 // The optimization status is unknown since we don't have primary apks.
116 app_info.GetPrimaryApkOptimizationStatus(&filter, &reason);
117 ASSERT_EQ(filter, "unknown");
118 ASSERT_EQ(reason, "unknown");
119}
120
121} // namespace art