Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1dde581

Browse files
test download progress bar by using url connection
1 parent d7f79b3 commit 1dde581

File tree

9 files changed

+27889
-94
lines changed

9 files changed

+27889
-94
lines changed

‎javademo/src/main/java/console/PercentagePrinter.java‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,10 @@ public void updateProgress(double progressPercentage) {
4848
}
4949

5050
String percentage = String.format("%.2f%%", (progressPercentage * 100));
51-
5251
out.printf("] %3s", percentage);
5352
}
5453

5554
public void complete() {
5655
out.println("\r" + afterCompleteMessage);
5756
}
58-
}
57+
}
Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
package pool.connection;
22

3-
import java.util.concurrent.atomic.AtomicInteger;
3+
import java.net.DatagramSocket;
4+
import java.net.InetAddress;
5+
import java.net.InetSocketAddress;
6+
import java.net.Socket;
7+
import java.net.URI;
8+
import org.springframework.util.SocketUtils;
49
import util.SimpleLogger;
510

611
/**
@@ -10,36 +15,36 @@
1015
*/
1116
public class ConnectionClient {
1217

13-
private AtomicInteger rand = new AtomicInteger(0);
14-
private int id;
18+
private URI uri;
1519

16-
public ConnectionClient(intid) {
17-
this.id = id;
20+
public ConnectionClient(URIuri) {
21+
this.uri = uri;
1822
}
1923

2024
/**
2125
* Check connection alive
2226
*/
2327
public boolean isAlive() {
24-
boolean result = rand.getAndIncrement() % 2 == 0;
25-
SimpleLogger.println("{} try to isAlive.. result : {}", toString(), result);
26-
return result;
28+
try {
29+
Socket socket = new Socket();
30+
socket.connect(new InetSocketAddress(uri.getHost(), uri.getPort()), 1000);
31+
socket.close();
32+
return true;
33+
} catch (Exception e) {
34+
return false;
35+
}
2736
}
2837

2938
public void close() {
3039
SimpleLogger.println("{} close() is called", toString());
3140
}
3241

33-
public int getId() {
34-
return id;
35-
}
36-
37-
public void setId(int id) {
38-
this.id = id;
42+
public URI getUri() {
43+
return uri;
3944
}
4045

4146
@Override
4247
public String toString() {
43-
return getClass().getName() + "@" + Integer.toHexString(hashCode()) + "-" + id;
48+
return uri.toString();
4449
}
4550
}

‎javademo/src/main/java/pool/connection/ConnectionClientFactory.java‎

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package pool.connection;
22

3-
import java.util.concurrent.atomic.AtomicInteger;
3+
import java.net.URI;
4+
import java.util.List;
5+
import java.util.Random;
46
import org.apache.commons.pool2.PooledObject;
57
import org.apache.commons.pool2.PooledObjectFactory;
68
import org.apache.commons.pool2.impl.DefaultPooledObject;
@@ -13,16 +15,16 @@
1315
*/
1416
public class ConnectionClientFactory implements PooledObjectFactory<ConnectionClient> {
1517

16-
private AtomicInteger idGenerator = new AtomicInteger(0);
18+
private Random indexGenerator;
19+
private List<URI> uris;
20+
21+
public ConnectionClientFactory(List<URI> uris) {
22+
this.uris = uris;
23+
}
1724

1825
@Override
1926
public PooledObject<ConnectionClient> makeObject() throws Exception {
20-
int id = idGenerator.getAndIncrement();
21-
22-
ConnectionClient client = new ConnectionClient(id);
23-
24-
SimpleLogger.println("makeObject() : {}", client.toString());
25-
27+
ConnectionClient client = new ConnectionClient(uris.get(indexGenerator.nextInt(uris.size())));
2628
return new DefaultPooledObject<>(client);
2729
}
2830

@@ -46,14 +48,9 @@ public boolean validateObject(PooledObject<ConnectionClient> pool) {
4648
ConnectionClient client = pool.getObject();
4749

4850
if (client != null) {
49-
SimpleLogger.println("validateObject() : {}", client);
50-
boolean result = client.isAlive();
51-
SimpleLogger.println("validateObject() : {} > {}", client, result);
52-
return result;
51+
return client.isAlive();
5352
}
5453

55-
SimpleLogger.println("validateObject() but null");
56-
5754
return false;
5855
}
5956

‎javademo/src/test/java/Temp.java‎

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1-
import java.util.HashMap;
2-
import java.util.Map;
1+
import java.io.IOException;
2+
import java.net.InetSocketAddress;
3+
import java.net.Socket;
4+
import java.net.SocketAddress;
5+
import java.net.URI;
6+
import java.net.URISyntaxException;
37
import org.junit.Test;
8+
import util.SimpleLogger;
49

510
/**
611
* @author zacconding
@@ -10,10 +15,33 @@
1015
public class Temp {
1116

1217
@Test
13-
public void temp() {
14-
Map<String, String> map = new HashMap<>();
15-
map.put("1", "aa");
16-
System.out.println(map.put("1", "bb"));
17-
System.out.println(map.get("1"));
18+
public void temp() throws URISyntaxException {
19+
System.out.println(ping("ws://192.168.5.78:8450/"));
20+
}
21+
22+
public boolean ping(String url) throws URISyntaxException {
23+
long start = System.currentTimeMillis();
24+
25+
URI uri = new URI(url);
26+
SimpleLogger.println("Try to host: {} | port : {}", uri.getHost(), uri.getPort());
27+
SocketAddress socketAddress = new InetSocketAddress(uri.getHost(), uri.getPort());
28+
Socket socket = new Socket();
29+
30+
try {
31+
socket.connect(socketAddress, 3000);
32+
return true;
33+
} catch (Exception e) {
34+
return false;
35+
} finally {
36+
if (socket != null && socket.isConnected()) {
37+
try {
38+
socket.close();
39+
} catch (IOException e) {
40+
e.printStackTrace();
41+
}
42+
}
43+
long elapsed = System.currentTimeMillis() - start;
44+
System.out.println(elapsed + " [MS]");
45+
}
1846
}
1947
}
Lines changed: 3 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,16 @@
11
package common;
22

3-
import java.util.HashSet;
4-
import java.util.Set;
5-
import java.util.concurrent.TimeUnit;
6-
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
7-
import org.junit.Test;
8-
import pool.connection.ConnectionClient;
9-
import pool.connection.ConnectionClientFactory;
10-
import pool.connection.ConnectionClientPool;
11-
import util.SimpleLogger;
12-
133
/**
144
* @author zacconding
15-
* @Date 2018-12-27
5+
* @Date 2018-12-28
166
* @GitHub : https://github.com/zacscoding
177
*/
188
public class ConnectionClientFactoryTests {
199

20-
@Test
21-
public void test() throws Exception {
22-
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
23-
config.setMaxIdle(5);
24-
config.setMinIdle(1);
25-
config.setMaxTotal(4);
26-
config.setTestOnBorrow(true);
27-
config.setTestOnCreate(true);
28-
config.setTestOnReturn(true);
29-
config.setJmxEnabled(false);
30-
config.setBlockWhenExhausted(true);
31-
32-
ConnectionClientPool pool = new ConnectionClientPool(new ConnectionClientFactory(), config);
33-
34-
Thread[] tasks = new Thread[10];
35-
for (int i = 0; i < 10; i++) {
36-
tasks[i] = new Thread(() -> {
37-
try {
38-
ConnectionClient client = pool.borrowObject();
39-
push(client.toString());
40-
pool.returnObject(client);
41-
} catch (Exception e) {
42-
e.printStackTrace();
43-
}
44-
});
45-
46-
tasks[i].start();
47-
}
48-
49-
for (int i = 0; i < 10; i++) {
50-
tasks[i].join();
51-
}
52-
53-
TimeUnit.SECONDS.sleep(5L);
54-
55-
addrs.iterator().forEachRemaining(
56-
addr -> System.out.println("## created client :: " + addr)
57-
);
58-
SimpleLogger.println("## Created {} clients", addrs.size());
10+
private int openPort() {
5911
}
6012

61-
Set<String> addrs = newHashSet<>();
13+
privatevoidclosePort() {
6214

63-
private synchronized void push(String addr) {
64-
addrs.add(addr);
6515
}
6616
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
//package common;
2+
//
3+
//import java.util.HashSet;
4+
//import java.util.Set;
5+
//import java.util.concurrent.TimeUnit;
6+
//import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
7+
//import org.junit.Test;
8+
//import pool.connection.ConnectionClient;
9+
//import pool.connection.ConnectionClientFactory;
10+
//import pool.connection.ConnectionClientPool;
11+
//import util.SimpleLogger;
12+
//
13+
///**
14+
// * @author zacconding
15+
// * @Date 2018年12月27日
16+
// * @GitHub : https://github.com/zacscoding
17+
// */
18+
//public class ConnectionClientFactoryTests2 {
19+
//
20+
// @Test
21+
// public void test() throws Exception {
22+
// GenericObjectPoolConfig config = new GenericObjectPoolConfig();
23+
// config.setMaxIdle(5);
24+
// config.setMinIdle(1);
25+
// config.setMaxTotal(4);
26+
// config.setTestOnBorrow(true);
27+
// config.setTestOnCreate(true);
28+
// config.setTestOnReturn(true);
29+
// config.setJmxEnabled(false);
30+
// config.setBlockWhenExhausted(true);
31+
//
32+
// ConnectionClientPool pool = new ConnectionClientPool(new ConnectionClientFactory(), config);
33+
//
34+
// Thread[] tasks = new Thread[10];
35+
// for (int i = 0; i < 10; i++) {
36+
// tasks[i] = new Thread(() -> {
37+
// try {
38+
// ConnectionClient client = pool.borrowObject();
39+
// push(client.toString());
40+
// pool.returnObject(client);
41+
// } catch (Exception e) {
42+
// e.printStackTrace();
43+
// }
44+
// });
45+
//
46+
// tasks[i].start();
47+
// }
48+
//
49+
// for (int i = 0; i < 10; i++) {
50+
// tasks[i].join();
51+
// }
52+
//
53+
// TimeUnit.SECONDS.sleep(5L);
54+
//
55+
// addrs.iterator().forEachRemaining(
56+
// addr -> System.out.println("## created client :: " + addr)
57+
// );
58+
// SimpleLogger.println("## Created {} clients", addrs.size());
59+
// }
60+
//
61+
// Set<String> addrs = new HashSet<>();
62+
//
63+
// private synchronized void push(String addr) {
64+
// addrs.add(addr);
65+
// }
66+
//}

‎javademo/src/test/java/console/PercentagePrinterTest.java‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package console;
22

3+
import java.nio.file.Files;
4+
import java.util.List;
5+
import java.util.stream.Collectors;
6+
import org.springframework.core.io.ClassPathResource;
7+
38
/**
49
* @author zacconding
510
* @Date 2018年12月28日
@@ -8,12 +13,32 @@
813
public class PercentagePrinterTest {
914

1015
public static void main(String[] args) throws Exception {
16+
test2();
17+
}
18+
19+
private static void test2() throws Exception {
20+
List<Double> percentages = Files.readAllLines(new ClassPathResource("common/percentage.txt").getFile().toPath())
21+
.stream()
22+
.filter(s -> s != null && s.length() > 0)
23+
.map(s -> Double.parseDouble(s))
24+
.collect(Collectors.toList());
25+
26+
PercentagePrinter printer = new PercentagePrinter();
27+
28+
for (double percentage : percentages) {
29+
printer.updateProgress(percentage);
30+
Thread.sleep(2L);
31+
}
32+
}
33+
34+
private static void test1() throws Exception {
1135
PercentagePrinter printer = new PercentagePrinter();
1236

1337
for (double progressPercentage = 0.0D; progressPercentage <= 1.0D; progressPercentage += 0.01D) {
1438
printer.updateProgress(progressPercentage);
1539
Thread.sleep(20);
1640
}
41+
1742
printer.complete();
1843
}
1944
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /