问题描述
我实现了以下两个测试用例来测试 DynamoDB 增强型库。
测试用例 1:在表“digital_form”上使用 Get Item,PK =“FORM#ABC123”,SK =“INFO#ABC123”。可以返回结果
2021-01-09 11:31:57.067 542-31149/? E/ActivityManager: ANR in com.example.td.barapp (com.example.td.barapp/.MainActivity)
PID: 31101
Reason: Input dispatching timed out (deb7f58 com.example.td.barapp/com.example.td.barapp.MainActivity (server) is not responding. Waited 5005ms for MotionEvent)
Parent: com.example.td.barapp/.MainActivity
Load: 0.71 / 0.83 / 1.35
----- Output from /proc/pressure/memory -----
some avg10=0.00 avg60=0.00 avg300=0.00 total=46655214
full avg10=0.00 avg60=0.00 avg300=0.00 total=3766399
----- End output from /proc/pressure/memory -----
cpu usage from 1ms to 6375ms later (2021-01-09 10:31:50.651 to 2021-01-09 10:31:57.025):
93% 31101/com.example.td.barapp: 75% user + 17% kernel / faults: 2812 minor
31% 542/system_server: 3.7% user + 27% kernel / faults: 7660 minor
6.7% 2702/com.android.systemUI: 5% user + 1.7% kernel / faults: 4875 minor
5.6% 277/android.hardware.bluetooth@1.1-service.sim: 0.1% user + 5.4% kernel
4.7% 3858/com.google.android.gms.persistent: 2.6% user + 2% kernel / faults: 2653 minor
0.1% 424/media.codec: 0% user + 0.1% kernel / faults: 3235 minor
0.1% 426/media.swcodec: 0% user + 0.1% kernel / faults: 3265 minor
2.1% 1102/com.android.phone: 0.9% user + 1.2% kernel / faults: 1428 minor
2% 374/adbd: 0% user + 2% kernel
1.8% 947/com.android.networkstack.process: 1.4% user + 0.4% kernel / faults: 1128 minor
0.1% 149/logd: 0% user + 0.1% kernel / faults: 2 minor
0.1% 410/media.extractor: 0% user + 0% kernel / faults: 1490 minor
0.1% 1650/com.android.emulator.multidisplay: 0% user + 0% kernel / faults: 913 minor
0% 1629/com.android.ims.rcsservice: 0% user + 0% kernel / faults: 904 minor
1% 295/android.hardware.graphics.composer@2.3-service: 0% user + 1% kernel
0% 1082/com.android.se: 0% user + 0% kernel / faults: 871 minor
0% 1/init: 0% user + 0% kernel
0.7% 10/rcu_preempt: 0% user + 0.7% kernel
0% 2033/com.android.bluetooth: 0% user + 0% kernel / faults: 112 minor
0% 251/tombstoned: 0% user + 0% kernel
0.4% 363/logcat: 0% user + 0.4% kernel
0% 30392/logcat: 0% user + 0% kernel
0.3% 168/jbd2/vdc-8: 0% user + 0.3% kernel
0.1% 9/ksoftirqd/0: 0% user + 0.1% kernel
0.1% 16/ksoftirqd/1: 0% user + 0.1% kernel
0.1% 109/kworker/1:1H-kblockd: 0% user + 0.1% kernel
0% 153/vndservicemanager: 0% user + 0% kernel
0.1% 266/statsd: 0% user + 0.1% kernel / faults: 47 minor
0% 267/netd: 0% user + 0% kernel / faults: 36 minor
0.1% 326/android.hardware.wifi@1.0-service: 0% user + 0.1% kernel
0.1% 340/audioserver: 0.1% user + 0% kernel / faults: 41 minor
0.1% 348/surfaceflinger: 0% user + 0.1% kernel / faults: 40 minor
0% 383/cameraserver: 0% user + 0% kernel / faults: 43 minor
0% 385/drmserver: 0% user + 0% kernel / faults: 40 minor
0% 413/mediaserver: 0% user + 0% kernel / faults: 42 minor
0.1% 421/wificond: 0% user + 0.1% kernel
0.1% 919/android.hardware.gnss@2.0-service.ranchu: 0% user + 0.1% kernel
0.1% 30400/kworker/u4:0-phy0: 0% user + 0.1% kernel
0.1% 30858/kworker/0:1-events_power_efficient: 0% user + 0.1% kernel
0% 30977/kworker/1:2-mm_percpu_wq: 0% user + 0% kernel
+0% 31151/crash_dump32: 0% user + 0% kernel
96% TOTAL: 55% user + 40% kernel + 0% iowait + 0.3% softirq
cpu usage from 49ms to 796ms later (2021-01-09 10:31:50.699 to 2021-01-09 10:31:51.446):
61% 542/system_server: 0% user + 61% kernel / faults: 287 minor
57% 31149/AnrConsumer: 1.7% user + 56% kernel
99% 31101/com.example.td.barapp: 99% user + 0% kernel
99% 31101/ample.td.barapp: 99% user + 0% kernel
4.6% 277/android.hardware.bluetooth@1.1-service.sim: 0% user + 4.6% kernel
6.1% 1167/bluetooth@1.1-s: 0% user + 6.1% kernel
1.5% 295/android.hardware.graphics.composer@2.3-service: 0% user + 1.5% kernel
1.5% 349/: 0% user + 1.5% kernel
2.1% 3858/com.google.android.gms.persistent: 0% user + 2.1% kernel
87% TOTAL: 51% user + 36% kernel
测试用例 2:在同一张表上使用 Query,PK= "FORM#ABC123" 并且 SK 以 "INFO" 开头。假设它会返回包含测试用例 1 的结果集。但是,没有返回结果。
@Test
public void testGetItemWithPKSK() throws ExecutionException,InterruptedException {
DynamoDbAsyncTable<DigitalFormDao> digitalformTable = dynamoDbEnhancedAsyncclient
.table("digital_form",TableSchema.fromBean(DigitalFormDao.class));
DigitalFormDao form = digitalformTable.getItem(
Key.builder().partitionValue("FORM#ABC123").sortValue("INFO#ABC123").build()).get();
System.out.println(form.getSk());
}
我的查询语句有问题吗?
解决方法
这行得通吗?
public static void queryTableSortKeyBetween(DynamoDbEnhancedClient enhancedClient) {
try {
DynamoDbTable<Customer> mappedTable =
enhancedClient.table("DigitalForm",TableSchema.fromBean(DigitalFormDao.class));
// Querying the sort key Name between two values
Key key = Key.builder().partitionValue("FORM#ABC123").sortValue("INFO").build();
QueryConditional queryConditional = QueryConditional.sortBeginsWith(key);
PageIterable<DigitalFormDao> forms =
mappedTable.query(r -> r.queryConditional(queryConditional));
forms.stream()
.forEach(p -> p.items().forEach(item -> System.out.println(item.getCustName())));
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
System.exit(1);
}
System.out.println("Done");
}