Skip to content

Commit 0234164

Browse files
committed
Merge pull request #127 from longbai/add_dns
enhance dns
2 parents c23dd93 + 27c244c commit 0234164

29 files changed

+563
-195
lines changed

.idea/misc.xml

Lines changed: 25 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations.xml

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

android-sdk.iml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
</configuration>
99
</facet>
1010
</component>
11-
<component name="NewModuleRootManager" inherit-compiler-output="true">
11+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
1212
<exclude-output />
1313
<content url="file://$MODULE_DIR$">
1414
<excludeFolder url="file://$MODULE_DIR$/.gradle" />

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ buildscript {
55
jcenter()
66
}
77
dependencies {
8-
classpath 'com.android.tools.build:gradle:1.0.1'
8+
classpath 'com.android.tools.build:gradle:1.2.3'
99

1010
// NOTE: Do not place your application dependencies here; they belong
1111
// in the individual module build.gradle files

library/build.gradle

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,31 @@ android {
3232
}
3333

3434
dependencies {
35-
compile 'com.loopj.android:android-async-http:1.4.6'
35+
compile 'com.loopj.android:android-async-http:1.4.+'
36+
compile 'com.qiniu:happy-dns:0.1.+'
3637
// compile 'com.android.support:appcompat-v7:21.0.3'
3738
compile fileTree(include: ['*.jar'], dir: 'libs')
3839
}
3940

40-
task releaseJar(type: Copy, dependsOn: 'build') {
41-
from('build/intermediates/bundles/release')
42-
into('../releases')
43-
include('classes.jar')
44-
rename('classes.jar', 'qiniu-android-sdk-' + version + '.jar')
41+
task releaseJar(type:Jar, dependsOn: 'build') {
42+
//指定生成的jar名
43+
baseName 'qiniu-android-sdk-' + version
44+
//从哪里打包class文件
45+
from('build/intermediates/classes/release/com/qiniu/android/dns/')
46+
//打包到jar后的目录结构
47+
into('com/qiniu/android/dns/')
48+
//去掉不需要打包的目录和文件
49+
exclude('test/', 'BuildConfig.class', 'R.class')
50+
//去掉R$开头的文件
51+
exclude{ it.name.startsWith('R$');}
4552
}
4653

4754
android.libraryVariants.all { variant ->
4855
def name = variant.buildType.name
4956
def task = project.tasks.create "jar${name.capitalize()}", Jar
5057
task.dependsOn variant.javaCompile
5158
task.from variant.javaCompile.destinationDir
52-
task.exclude '**/R.*', '**/R$*.*'
59+
task.exclude '**/R.*', '**/R$*.*', '**/BuildConfig.class'
5360
artifacts.add('archives', task);
5461
}
5562

library/library.iml

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
1313
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
1414
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
15-
<option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
16-
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugTest" />
17-
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugTestSources" />
18-
<option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugTestSources" />
15+
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
16+
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
17+
<afterSyncTasks>
18+
<task>generateDebugAndroidTestSources</task>
19+
<task>generateDebugSources</task>
20+
</afterSyncTasks>
1921
<option name="ALLOW_USER_CONFIGURATION" value="false" />
2022
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
2123
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
@@ -25,9 +27,9 @@
2527
</configuration>
2628
</facet>
2729
</component>
28-
<component name="NewModuleRootManager" inherit-compiler-output="false">
30+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
2931
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
30-
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
32+
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
3133
<exclude-output />
3234
<content url="file://$MODULE_DIR$">
3335
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
@@ -36,12 +38,12 @@
3638
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
3739
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
3840
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />
39-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/test/debug" isTestSource="true" generated="true" />
40-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/test/debug" isTestSource="true" generated="true" />
41-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/test/debug" isTestSource="true" generated="true" />
42-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/test/debug" isTestSource="true" generated="true" />
43-
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/test/debug" type="java-test-resource" />
44-
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/test/debug" type="java-test-resource" />
41+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
42+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
43+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
44+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
45+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
46+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/androidTest/debug" type="java-test-resource" />
4547
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
4648
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
4749
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
@@ -63,7 +65,6 @@
6365
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
6466
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
6567
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
66-
<excludeFolder url="file://$MODULE_DIR$/build/docs" />
6768
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
6869
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
6970
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
@@ -83,13 +84,13 @@
8384
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
8485
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
8586
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
86-
<excludeFolder url="file://$MODULE_DIR$/build/libs" />
8787
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
88-
<excludeFolder url="file://$MODULE_DIR$/build/poms" />
88+
<excludeFolder url="file://$MODULE_DIR$/build/reports" />
8989
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
9090
</content>
9191
<orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
9292
<orderEntry type="sourceFolder" forTests="false" />
93-
<orderEntry type="library" exported="" name="android-async-http-1.4.6" level="project" />
93+
<orderEntry type="library" exported="" name="happy-dns-0.1.1" level="project" />
94+
<orderEntry type="library" exported="" name="android-async-http-1.4.7" level="project" />
9495
</component>
9596
</module>

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ public void testNoComplete() {
285285
public void testIpBack() throws Throwable {
286286

287287
Configuration c = new Configuration.Builder()
288-
.zone(new Zone("upwelcome.qiniu.com", Zone.zone0.upHostBackup, Zone.zone0.upIp))
288+
.zone(new Zone("upwelcome.qiniu.com", Zone.zone0.upHostBackup, Zone.zone0.upIp, Zone.zone0.upIp2))
289289
.build();
290290
UploadManager uploadManager2 = new UploadManager(c);
291291
final String expectKey = "你好;\"\r\n\r\n\r\n";
@@ -328,7 +328,7 @@ public void complete(String k, ResponseInfo rinfo, JSONObject response) {
328328
@SmallTest
329329
public void testPortBackup() throws Throwable {
330330
Configuration c = new Configuration.Builder()
331-
.zone(new Zone("upload.qiniu.com", Zone.zone0.upHostBackup, Zone.zone0.upIp))
331+
.zone(new Zone("upload.qiniu.com", Zone.zone0.upHostBackup, Zone.zone0.upIp, Zone.zone0.upIp2))
332332
.upPort(9999)
333333
.build();
334334
UploadManager uploadManager2 = new UploadManager(c);
@@ -372,7 +372,7 @@ public void complete(String k, ResponseInfo rinfo, JSONObject response) {
372372
@SmallTest
373373
public void testDnsHijacking() throws Throwable {
374374
Configuration c = new Configuration.Builder()
375-
.zone(new Zone("uphijacktest.qiniu.com", Zone.zone0.upHostBackup, Zone.zone0.upIp))
375+
.zone(new Zone("uphijacktest.qiniu.com", Zone.zone0.upHostBackup, Zone.zone0.upIp, Zone.zone0.upIp2))
376376
.build();
377377
UploadManager uploadManager2 = new UploadManager(c);
378378
final String expectKey = "你好;\"\r\n\r\n\r\n";

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ protected void setUp() throws Exception {
3333

3434
@SmallTest
3535
public void testPost1() throws Throwable {
36-
3736
httpManager.postData("http://www.baidu.com", "hello".getBytes(), null, null, new CompletionHandler() {
3837
@Override
3938
public void complete(ResponseInfo rinfo, JSONObject response) {
@@ -44,7 +43,7 @@ public void complete(ResponseInfo rinfo, JSONObject response) {
4443
}, null, false);
4544

4645
try {
47-
signal.await(60, TimeUnit.SECONDS); // wait for callback
46+
signal.await(6000, TimeUnit.SECONDS); // wait for callback
4847
} catch (InterruptedException e) {
4948
e.printStackTrace();
5049
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ private void templateHijack(int size) throws Throwable {
112112
final File f = TempFile.createFile(size);
113113

114114
Configuration c = new Configuration.Builder()
115-
.zone(new Zone("uphijacktest.qiniu.com", Zone.zone0.upHostBackup, Zone.zone0.upIp))
115+
.zone(new Zone("uphijacktest.qiniu.com", Zone.zone0.upHostBackup,
116+
Zone.zone0.upIp, Zone.zone0.upIp2))
116117
.build();
117118
UploadManager uploadManager = new UploadManager(c);
118119

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.qiniu.android.http;
2+
3+
import com.loopj.android.http.AsyncHttpClient;
4+
import com.qiniu.android.dns.DnsManager;
5+
6+
import org.apache.http.conn.ClientConnectionManager;
7+
import org.apache.http.conn.scheme.SchemeRegistry;
8+
import org.apache.http.params.BasicHttpParams;
9+
10+
/**
11+
* Created by bailong on 15/7/4.
12+
*/
13+
public final class AsyncHttpClientMod extends AsyncHttpClient {
14+
static final ThreadLocal<DnsManager> local = new ThreadLocal<>();
15+
static final ThreadLocal<String> ip = new ThreadLocal<>();
16+
private final DnsManager dns;
17+
18+
private AsyncHttpClientMod(DnsManager dns) {
19+
this.dns = dns;
20+
}
21+
22+
public static AsyncHttpClientMod create(DnsManager dns) {
23+
local.set(dns);
24+
AsyncHttpClientMod a = new AsyncHttpClientMod(dns);
25+
local.remove();
26+
return a;
27+
}
28+
29+
//在父类构造函数中调用
30+
@Override
31+
protected ClientConnectionManager createConnectionManager(SchemeRegistry schemeRegistry, BasicHttpParams httpParams) {
32+
DnsManager d = dns == null ? local.get() : dns;
33+
return new ThreadSafeClientConnManager(httpParams, schemeRegistry, d);
34+
}
35+
}

0 commit comments

Comments
 (0)