Skip to content

Commit ca3278f

Browse files
authored
Merge pull request #453 from YangSen-qn/network_status_check
Network status check & optimize up log
2 parents 8eaa808 + 7b54106 commit ca3278f

28 files changed

+752
-320
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
#Changelog
2+
## 8.2.0(2021-02-20)
3+
## 增加
4+
* 增加网络监控功能,选择最优 Host 进行上传
5+
* 优化日志统计
6+
27
## 8.1.2(2021-01-18)
38
* 区域查询采用SingleFlight模式
49
* 增加网络链接状态检测

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ https://github.com/qiniudemo/qiniu-lab-android
1515

1616
| Qiniu SDK 版本 | 最低 Android版本 | 依赖库版本 |
1717
|------------ |-----------------|------------------------|
18+
| 8.2.x | Android 5.0+ | okhttp 4+ |
1819
| 8.1.x | Android 5.0+ | okhttp 4+ |
1920
| 8.0.x | Android 5.0+ | okhttp 4+ |
2021
| 7.7.x | Android 5.0+ | okhttp 4+ |
@@ -28,7 +29,7 @@ https://github.com/qiniudemo/qiniu-lab-android
2829
| 7.0.7 | Android 2.2+ | android-async-http 1.4.8 |
2930

3031
### 注意
31-
* 推荐使用最新版:8.1.2
32+
* 推荐使用最新版:8.2.0
3233
* AndroidNetwork.getMobileDbm()可以获取手机信号强度,需要如下权限(API>=18时生效)
3334
```
3435
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

library/src/androidTest/java/com/qiniu/android/ConnectCheckTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public void testCheck() {
1010
int maxCount = 100;
1111
int successCount = 0;
1212
for (int i = 0; i < maxCount; i++) {
13-
if (ConnectChecker.check()) {
13+
if (ConnectChecker.isConnected(ConnectChecker.check())) {
1414
successCount += 1;
1515
}
1616
}
@@ -23,7 +23,7 @@ public void testCustomCheckHosts() {
2323
int maxCount = 100;
2424
int successCount = 0;
2525
for (int i = 0; i < maxCount; i++) {
26-
if (ConnectChecker.check()) {
26+
if (ConnectChecker.isConnected(ConnectChecker.check())) {
2727
successCount += 1;
2828
}
2929
}
@@ -36,7 +36,7 @@ public void testNotConnected() {
3636
int maxCount = 100;
3737
int successCount = 0;
3838
for (int i = 0; i < maxCount; i++) {
39-
if (ConnectChecker.check()) {
39+
if (ConnectChecker.isConnected(ConnectChecker.check())) {
4040
successCount += 1;
4141
}
4242
}

library/src/androidTest/java/com/qiniu/android/DnsTransactionTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,12 @@ public void test_CheckAndPrefetch(){
6161
public void run() {
6262

6363
boolean isSuccess = DnsPrefetchTransaction.addDnsCheckAndPrefetchTransaction(zone, UpToken.parse(TestConfig.token_z0));
64-
if (isSuccess){
65-
successCount += 1;
64+
synchronized (this) {
65+
if (isSuccess) {
66+
successCount += 1;
67+
}
68+
completeCount += 1;
6669
}
67-
completeCount += 1;
6870
}
6971
}).start();
7072
}
@@ -80,7 +82,7 @@ public boolean shouldWait() {
8082
}
8183
}, 60);
8284

83-
assertTrue("successCount:" + successCount, successCount < 2);
85+
assertTrue("successCount:" + successCount, successCount < 3);
8486
}
8587

8688

library/src/androidTest/java/com/qiniu/android/TestConfig.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ public final class TestConfig {
1010
// TODO: 2020-05-09 bad token for testPutBytesWithFixedZoneUseBackupDomains
1111
// 华东上传凭证
1212
public static final String bucket_z0 = "kodo-phone-zone0-space";
13-
public static final String token_z0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:Tq8MZRIC2hc1hxWxH3RqLcdFuQw=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTAtc3BhY2UiLCJkZWFkbGluZSI6MTYxMzE4NDg0OCwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
13+
public static final String token_z0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:m1kHxpdaFH3NK120iAkHlSwBpio=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTAtc3BhY2UiLCJkZWFkbGluZSI6MTYxODgxNDM5MCwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
1414
// 华北上传凭证
1515
public static final String bucket_z1 = "kodo-phone-zone1-space";
16-
public static final String token_z1 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:FZiNMb3SKDFpdat2q9wpG6zbn_w=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTEtc3BhY2UiLCJkZWFkbGluZSI6MTYxMzE4NDg0OCwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
16+
public static final String token_z1 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:1vkQkb72ANFiAftABJAF2dhbXd0=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTEtc3BhY2UiLCJkZWFkbGluZSI6MTYxODgxNDM5MCwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
1717
// 华南上传凭证
1818
public static final String bucket_z2 = "kodo-phone-zone2-space";
19-
public static final String token_z2 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:cP9NhEWUWhPrxlfAxaemVj6uIKI=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTItc3BhY2UiLCJkZWFkbGluZSI6MTYxMzE4NDg0OCwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
19+
public static final String token_z2 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:ZTqDdbvHJuP3hJFckpadCyW08Cs=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTItc3BhY2UiLCJkZWFkbGluZSI6MTYxODgxNDM5MCwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
2020
// 北美上传凭证
2121
public static final String bucket_na0 = "kodo-phone-zone-na0-space";
22-
public static final String token_na0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:V9zBCBaNWrKZvqLu4b5Dem0hOrQ=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1uYTAtc3BhY2UiLCJkZWFkbGluZSI6MTYxMzE4NDg0OCwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
22+
public static final String token_na0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:I8Q0E32hEelHH4xWBH2p17SxhdA=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1uYTAtc3BhY2UiLCJkZWFkbGluZSI6MTYxODgxNDM5MCwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
2323
// 东南亚上传凭证
2424
public static final String bucket_as0 = "kodo-phone-zone-as0-space";
25-
public static final String token_as0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:PaaKXdrwQgI4J7Fw5nhtbwQ_bu8=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1hczAtc3BhY2UiLCJkZWFkbGluZSI6MTYxMzE4NDg0OCwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
26-
public static final String invalidBucketToken = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:k9olgJ5rgs-SvzirMtdU_ASmArY=:eyJzY29wZSI6InpvbmVfaW52YWxpZCIsImRlYWRsaW5lIjoxNjEzMTg0ODQ4LCAicmV0dXJuQm9keSI6IntcImNhbGxiYWNrVXJsXCI6XCJodHRwOlwvXC9jYWxsYmFjay5kZXYucWluaXUuaW9cIiwgXCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
25+
public static final String token_as0 = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:DDXIo7KzUj3ceh5LveRXyNfsiZU=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1hczAtc3BhY2UiLCJkZWFkbGluZSI6MTYxODgxNDM5MCwgInJldHVybkJvZHkiOiJ7XCJjYWxsYmFja1VybFwiOlwiaHR0cDpcL1wvY2FsbGJhY2suZGV2LnFpbml1LmlvXCIsIFwiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKX0ifQ==";
26+
public static final String invalidBucketToken = "dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:Kpi_0B6gZSf7nF5UgdZtvHx0h8M=:eyJzY29wZSI6InpvbmVfaW52YWxpZCIsImRlYWRsaW5lIjoxNjE4ODE0MzkwLCAicmV0dXJuQm9keSI6IntcImNhbGxiYWNrVXJsXCI6XCJodHRwOlwvXC9jYWxsYmFjay5kZXYucWluaXUuaW9cIiwgXCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpfSJ9";
2727

2828
// -----------
2929
public static final String ak = "bjtWBQXrcxgo7HWwlC_bgHg81j352_GhgBGZPeOW";

library/src/androidTest/java/com/qiniu/android/UploadDomainRegionTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.qiniu.android.common.FixedZone;
44
import com.qiniu.android.http.request.IUploadServer;
5+
import com.qiniu.android.http.request.UploadRequestState;
56
import com.qiniu.android.http.serverRegion.UploadDomainRegion;
67
import com.qiniu.android.http.serverRegion.UploadServerFreezeManager;
78
import com.qiniu.android.utils.Utils;
@@ -18,9 +19,11 @@ public void testGetOneServer(){
1819
UploadDomainRegion region = new UploadDomainRegion();
1920
region.setupRegionData(zone.getZonesInfo(null).zonesInfo.get(0));
2021

21-
UploadServerFreezeManager.getInstance().freezeHost(host, type, 100);
22+
UploadServerFreezeManager.getInstance().freezeType(type, 100);
2223

23-
IUploadServer server = region.getNextServer(false, null, null);
24+
UploadRequestState state = new UploadRequestState();
25+
state.setUseOldServer(false);
26+
IUploadServer server = region.getNextServer(state, null, null);
2427

2528
assertNotNull(server);
2629
}

library/src/androidTest/java/com/qiniu/android/UploadServerFreezeManagerTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,23 @@ public void testFreeze() {
88

99
String host = "baidu.com";
1010
String type = host;
11-
UploadServerFreezeManager.getInstance().freezeHost(host, type, 10);
11+
UploadServerFreezeManager.getInstance().freezeType(type, 10);
1212

13-
boolean isFrozen = UploadServerFreezeManager.getInstance().isFreezeHost(host, type);
13+
boolean isFrozen = UploadServerFreezeManager.getInstance().isTypeFrozen(type);
1414
assertTrue(isFrozen);
1515
}
1616

1717
public void testUnfreeze() {
1818

1919
String host = "baidu.com";
2020
String type = host;
21-
UploadServerFreezeManager.getInstance().freezeHost(host, type, 10);
21+
UploadServerFreezeManager.getInstance().freezeType(type, 10);
2222

23-
boolean isFrozen = UploadServerFreezeManager.getInstance().isFreezeHost(host, type);
23+
boolean isFrozen = UploadServerFreezeManager.getInstance().isTypeFrozen(type);
2424
assertTrue(isFrozen);
2525

26-
UploadServerFreezeManager.getInstance().unfreezeHost(host, type);
27-
isFrozen = UploadServerFreezeManager.getInstance().isFreezeHost(host, type);
26+
UploadServerFreezeManager.getInstance().unfreezeType(type);
27+
isFrozen = UploadServerFreezeManager.getInstance().isTypeFrozen(type);
2828
assertTrue(isFrozen == false);
2929

3030
}

library/src/main/java/com/qiniu/android/collect/ReportItem.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public String toJson(){
4747
public static final String RequestKeyStatusCode = "status_code";
4848
public static final String RequestKeyRequestId = "req_id";
4949
public static final String RequestKeyHost = "host";
50+
public static final String RequestKeyHttpVersion = "http_version";
5051
public static final String RequestKeyRemoteIp = "remote_ip";
5152
public static final String RequestKeyPort = "port";
5253
public static final String RequestKeyTargetBucket = "target_bucket";
@@ -80,6 +81,7 @@ public String toJson(){
8081
public static final String RequestKeyPrefetchedDnsSource = "prefetched_dns_source";
8182
public static final String RequestKeyPrefetchedBefore = "prefetched_before";
8283
public static final String RequestKeyPrefetchedErrorMessage = "prefetched_error_message";
84+
public static final String RequestKeyNetworkMeasuring = "network_measuring";
8385

8486
// 分块上传统计⽇志
8587
public static final String BlockKeyLogType = "log_type";

library/src/main/java/com/qiniu/android/common/AutoZone.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public void complete(Object value) {
123123

124124
} catch (Exception e) {
125125
/// 此处永远不会执行,回调只为占位
126-
completeHandler.complete(ResponseInfo.NetworkError, ResponseInfo.localIOError("uc query"), null);
126+
completeHandler.complete(ResponseInfo.NetworkError, ResponseInfo.localIOError(e.toString()), null);
127127
}
128128
}
129129

library/src/main/java/com/qiniu/android/common/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
public final class Constants {
5-
public static final String VERSION = "8.1.2";
5+
public static final String VERSION = "8.2.0";
66

77
public static final String UTF_8 = "utf-8";
88
}

0 commit comments

Comments
 (0)