• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 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 package com.android.server.appsearch.external.localstorage.stats;
18 
19 import android.annotation.NonNull;
20 import android.app.appsearch.AppSearchResult;
21 
22 import java.util.Objects;
23 
24 /**
25  * Class holds detailed stats for Optimize.
26  *
27  * @hide
28  */
29 public final class OptimizeStats {
30     /**
31      * The status code returned by {@link AppSearchResult#getResultCode()} for the call or internal
32      * state.
33      */
34     @AppSearchResult.ResultCode private final int mStatusCode;
35 
36     private final int mTotalLatencyMillis;
37     private final int mNativeLatencyMillis;
38 
39     // Time used to optimize the document store in millis.
40     private final int mNativeDocumentStoreOptimizeLatencyMillis;
41 
42     // Time used to restore the index in millis.
43     private final int mNativeIndexRestorationLatencyMillis;
44 
45     // Number of documents before the optimization.
46     private final int mNativeOriginalDocumentCount;
47 
48     // Number of documents deleted during the optimization.
49     private final int mNativeDeletedDocumentCount;
50 
51     // Number of documents expired during the optimization.
52     private final int mNativeExpiredDocumentCount;
53 
54     // Size of storage in bytes before the optimization.
55     private final long mNativeStorageSizeBeforeBytes;
56 
57     // Size of storage in bytes after the optimization.
58     private final long mNativeStorageSizeAfterBytes;
59 
60     // The amount of time in millis since the last optimization ran calculated using wall clock time
61     private final long mNativeTimeSinceLastOptimizeMillis;
62 
OptimizeStats(@onNull Builder builder)63     OptimizeStats(@NonNull Builder builder) {
64         Objects.requireNonNull(builder);
65         mStatusCode = builder.mStatusCode;
66         mTotalLatencyMillis = builder.mTotalLatencyMillis;
67         mNativeLatencyMillis = builder.mNativeLatencyMillis;
68         mNativeDocumentStoreOptimizeLatencyMillis =
69                 builder.mNativeDocumentStoreOptimizeLatencyMillis;
70         mNativeIndexRestorationLatencyMillis = builder.mNativeIndexRestorationLatencyMillis;
71         mNativeOriginalDocumentCount = builder.mNativeOriginalDocumentCount;
72         mNativeDeletedDocumentCount = builder.mNativeDeletedDocumentCount;
73         mNativeExpiredDocumentCount = builder.mNativeExpiredDocumentCount;
74         mNativeStorageSizeBeforeBytes = builder.mNativeStorageSizeBeforeBytes;
75         mNativeStorageSizeAfterBytes = builder.mNativeStorageSizeAfterBytes;
76         mNativeTimeSinceLastOptimizeMillis = builder.mNativeTimeSinceLastOptimizeMillis;
77     }
78 
79     /** Returns status code for this optimization. */
80     @AppSearchResult.ResultCode
getStatusCode()81     public int getStatusCode() {
82         return mStatusCode;
83     }
84 
85     /** Returns total latency of this optimization in millis. */
getTotalLatencyMillis()86     public int getTotalLatencyMillis() {
87         return mTotalLatencyMillis;
88     }
89 
90     /** Returns how much time in millis spent in the native code. */
getNativeLatencyMillis()91     public int getNativeLatencyMillis() {
92         return mNativeLatencyMillis;
93     }
94 
95     /** Returns time used to optimize the document store in millis. */
getDocumentStoreOptimizeLatencyMillis()96     public int getDocumentStoreOptimizeLatencyMillis() {
97         return mNativeDocumentStoreOptimizeLatencyMillis;
98     }
99 
100     /** Returns time used to restore the index in millis. */
getIndexRestorationLatencyMillis()101     public int getIndexRestorationLatencyMillis() {
102         return mNativeIndexRestorationLatencyMillis;
103     }
104 
105     /** Returns number of documents before the optimization. */
getOriginalDocumentCount()106     public int getOriginalDocumentCount() {
107         return mNativeOriginalDocumentCount;
108     }
109 
110     /** Returns number of documents deleted during the optimization. */
getDeletedDocumentCount()111     public int getDeletedDocumentCount() {
112         return mNativeDeletedDocumentCount;
113     }
114 
115     /** Returns number of documents expired during the optimization. */
getExpiredDocumentCount()116     public int getExpiredDocumentCount() {
117         return mNativeExpiredDocumentCount;
118     }
119 
120     /** Returns size of storage in bytes before the optimization. */
getStorageSizeBeforeBytes()121     public long getStorageSizeBeforeBytes() {
122         return mNativeStorageSizeBeforeBytes;
123     }
124 
125     /** Returns size of storage in bytes after the optimization. */
getStorageSizeAfterBytes()126     public long getStorageSizeAfterBytes() {
127         return mNativeStorageSizeAfterBytes;
128     }
129 
130     /**
131      * Returns the amount of time in millis since the last optimization ran calculated using wall
132      * clock time.
133      */
getTimeSinceLastOptimizeMillis()134     public long getTimeSinceLastOptimizeMillis() {
135         return mNativeTimeSinceLastOptimizeMillis;
136     }
137 
138     /** Builder for {@link RemoveStats}. */
139     public static class Builder {
140         /**
141          * The status code returned by {@link AppSearchResult#getResultCode()} for the call or
142          * internal state.
143          */
144         @AppSearchResult.ResultCode int mStatusCode;
145 
146         int mTotalLatencyMillis;
147         int mNativeLatencyMillis;
148         int mNativeDocumentStoreOptimizeLatencyMillis;
149         int mNativeIndexRestorationLatencyMillis;
150         int mNativeOriginalDocumentCount;
151         int mNativeDeletedDocumentCount;
152         int mNativeExpiredDocumentCount;
153         long mNativeStorageSizeBeforeBytes;
154         long mNativeStorageSizeAfterBytes;
155         long mNativeTimeSinceLastOptimizeMillis;
156 
157         /** Sets the status code. */
158         @NonNull
setStatusCode(@ppSearchResult.ResultCode int statusCode)159         public Builder setStatusCode(@AppSearchResult.ResultCode int statusCode) {
160             mStatusCode = statusCode;
161             return this;
162         }
163 
164         /** Sets total latency in millis. */
165         @NonNull
setTotalLatencyMillis(int totalLatencyMillis)166         public Builder setTotalLatencyMillis(int totalLatencyMillis) {
167             mTotalLatencyMillis = totalLatencyMillis;
168             return this;
169         }
170 
171         /** Sets native latency in millis. */
172         @NonNull
setNativeLatencyMillis(int nativeLatencyMillis)173         public Builder setNativeLatencyMillis(int nativeLatencyMillis) {
174             mNativeLatencyMillis = nativeLatencyMillis;
175             return this;
176         }
177 
178         /** Sets time used to optimize the document store. */
179         @NonNull
setDocumentStoreOptimizeLatencyMillis( int documentStoreOptimizeLatencyMillis)180         public Builder setDocumentStoreOptimizeLatencyMillis(
181                 int documentStoreOptimizeLatencyMillis) {
182             mNativeDocumentStoreOptimizeLatencyMillis = documentStoreOptimizeLatencyMillis;
183             return this;
184         }
185 
186         /** Sets time used to restore the index. */
187         @NonNull
setIndexRestorationLatencyMillis(int indexRestorationLatencyMillis)188         public Builder setIndexRestorationLatencyMillis(int indexRestorationLatencyMillis) {
189             mNativeIndexRestorationLatencyMillis = indexRestorationLatencyMillis;
190             return this;
191         }
192 
193         /** Sets number of documents before the optimization. */
194         @NonNull
setOriginalDocumentCount(int originalDocumentCount)195         public Builder setOriginalDocumentCount(int originalDocumentCount) {
196             mNativeOriginalDocumentCount = originalDocumentCount;
197             return this;
198         }
199 
200         /** Sets number of documents deleted during the optimization. */
201         @NonNull
setDeletedDocumentCount(int deletedDocumentCount)202         public Builder setDeletedDocumentCount(int deletedDocumentCount) {
203             mNativeDeletedDocumentCount = deletedDocumentCount;
204             return this;
205         }
206 
207         /** Sets number of documents expired during the optimization. */
208         @NonNull
setExpiredDocumentCount(int expiredDocumentCount)209         public Builder setExpiredDocumentCount(int expiredDocumentCount) {
210             mNativeExpiredDocumentCount = expiredDocumentCount;
211             return this;
212         }
213 
214         /** Sets Storage size in bytes before optimization. */
215         @NonNull
setStorageSizeBeforeBytes(long storageSizeBeforeBytes)216         public Builder setStorageSizeBeforeBytes(long storageSizeBeforeBytes) {
217             mNativeStorageSizeBeforeBytes = storageSizeBeforeBytes;
218             return this;
219         }
220 
221         /** Sets storage size in bytes after optimization. */
222         @NonNull
setStorageSizeAfterBytes(long storageSizeAfterBytes)223         public Builder setStorageSizeAfterBytes(long storageSizeAfterBytes) {
224             mNativeStorageSizeAfterBytes = storageSizeAfterBytes;
225             return this;
226         }
227 
228         /**
229          * Sets the amount the time since the last optimize ran calculated using wall clock time.
230          */
231         @NonNull
setTimeSinceLastOptimizeMillis(long timeSinceLastOptimizeMillis)232         public Builder setTimeSinceLastOptimizeMillis(long timeSinceLastOptimizeMillis) {
233             mNativeTimeSinceLastOptimizeMillis = timeSinceLastOptimizeMillis;
234             return this;
235         }
236 
237         /** Creates a {@link OptimizeStats}. */
238         @NonNull
build()239         public OptimizeStats build() {
240             return new OptimizeStats(/* builder= */ this);
241         }
242     }
243 }
244