refactor: fix test order
This commit is contained in:
parent
367c5a8e7b
commit
4819a63ea8
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" path="target/generated-sources/annotations">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="ignore_optional_problems" value="true"/>
|
||||
<attribute name="m2e-apt" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="ignore_optional_problems" value="true"/>
|
||||
<attribute name="m2e-apt" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>taos-jdbcdriver</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -53,17 +53,17 @@
|
|||
<artifactId>commons-lang3</artifactId>
|
||||
<version>${commons-lang3.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jacoco</groupId>
|
||||
<artifactId>jacoco-maven-plugin</artifactId>
|
||||
<version>0.8.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.13</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
|
|
|
@ -43,7 +43,11 @@ public class TestAsyncTSDBSubscribe {
|
|||
try {
|
||||
Class.forName("com.taosdata.jdbc.TSDBDriver");
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + dbName + "?user=root&password=taosdata", properties);
|
||||
String rawSql = "select * from " + tName + ";";
|
||||
TSDBSubscribe subscribe = ((TSDBConnection) connection).createSubscribe();
|
||||
|
|
|
@ -46,7 +46,10 @@ public class TestTSDBSubscribe {
|
|||
try {
|
||||
Class.forName("com.taosdata.jdbc.TSDBDriver");
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + dbName + "?user=root&password=taosdata"
|
||||
, properties);
|
||||
String rawSql = "select * from " + tName + ";";
|
||||
|
|
|
@ -30,6 +30,9 @@ public class AsyncSubscribeTest {
|
|||
}
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata"
|
||||
, properties);
|
||||
|
||||
|
@ -91,5 +94,6 @@ public class AsyncSubscribeTest {
|
|||
statement.executeQuery("drop database test");
|
||||
statement.close();
|
||||
connection.close();
|
||||
Thread.sleep(10);
|
||||
}
|
||||
}
|
|
@ -26,6 +26,9 @@ public class ConnectionTest {
|
|||
}
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata"
|
||||
, properties);
|
||||
|
||||
|
@ -50,8 +53,9 @@ public class ConnectionTest {
|
|||
statement.close();
|
||||
}
|
||||
connection.close();
|
||||
Thread.sleep(10);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
} catch (Exception e) {
|
||||
assert false : "close connection error: " + e.getMessage();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,9 @@ public class DatabaseMetaDataTest {
|
|||
}
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata",
|
||||
properties);
|
||||
|
||||
|
@ -232,9 +235,11 @@ public class DatabaseMetaDataTest {
|
|||
}
|
||||
|
||||
@AfterClass
|
||||
public static void close() throws SQLException {
|
||||
public static void close() throws Exception {
|
||||
statement.executeUpdate("drop database " + dbName);
|
||||
statement.close();
|
||||
connection.close();
|
||||
Thread.sleep(10);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,9 @@ public class ImportTest {
|
|||
}
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata"
|
||||
, properties);
|
||||
|
||||
|
@ -40,7 +43,7 @@ public class ImportTest {
|
|||
long ts = 1496732686000l;
|
||||
|
||||
for (int i = 0; i < 50; i++) {
|
||||
ts ++;
|
||||
ts++;
|
||||
int row = statement.executeUpdate("insert into " + dbName + "." + tName + " values (" + ts + ", " + (100 + i) + ", " + i + ")");
|
||||
System.out.println("insert into " + dbName + "." + tName + " values (" + ts + ", " + (100 + i) + ", " + i + ")\t" + row);
|
||||
assertEquals(1, row);
|
||||
|
@ -84,5 +87,7 @@ public class ImportTest {
|
|||
statement.executeUpdate("drop database " + dbName);
|
||||
statement.close();
|
||||
connection.close();
|
||||
Thread.sleep(10);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,15 +2,17 @@ package com.taosdata.jdbc;
|
|||
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.FixMethodOrder;
|
||||
import org.junit.Test;
|
||||
import org.junit.runners.MethodSorters;
|
||||
|
||||
import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Properties;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
@FixMethodOrder(MethodSorters.DEFAULT)
|
||||
public class PreparedStatementTest {
|
||||
static Connection connection = null;
|
||||
static PreparedStatement statement = null;
|
||||
|
@ -28,6 +30,9 @@ public class PreparedStatementTest {
|
|||
}
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata",
|
||||
properties);
|
||||
|
||||
|
@ -155,11 +160,11 @@ public class PreparedStatementTest {
|
|||
} catch (SQLException e) {
|
||||
}
|
||||
try {
|
||||
tsdbStatement.executeUpdate(null, new int[] { 0 });
|
||||
tsdbStatement.executeUpdate(null, new int[]{0});
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
try {
|
||||
tsdbStatement.executeUpdate(null, new String[] { "str1", "str2" });
|
||||
tsdbStatement.executeUpdate(null, new String[]{"str1", "str2"});
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
try {
|
||||
|
@ -185,10 +190,12 @@ public class PreparedStatementTest {
|
|||
}
|
||||
|
||||
@AfterClass
|
||||
public static void close() throws SQLException {
|
||||
public static void close() throws Exception {
|
||||
statement.executeUpdate("drop database " + dbName);
|
||||
statement.close();
|
||||
connection.close();
|
||||
Thread.sleep(10);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -30,6 +30,11 @@ public class ResultSetTest {
|
|||
}
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata"
|
||||
, properties);
|
||||
|
||||
|
@ -813,10 +818,12 @@ public class ResultSetTest {
|
|||
}
|
||||
|
||||
@AfterClass
|
||||
public static void close() throws SQLException {
|
||||
public static void close() throws Exception {
|
||||
statement.executeUpdate("drop database " + dbName);
|
||||
statement.close();
|
||||
connection.close();
|
||||
Thread.sleep(10);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -25,6 +25,9 @@ public class SelectTest {
|
|||
}
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata"
|
||||
, properties);
|
||||
|
||||
|
@ -59,9 +62,11 @@ public class SelectTest {
|
|||
}
|
||||
|
||||
@After
|
||||
public void close() throws SQLException {
|
||||
public void close() throws Exception {
|
||||
statement.executeUpdate("drop database " + dbName);
|
||||
statement.close();
|
||||
connection.close();
|
||||
Thread.sleep(10);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,13 +2,16 @@ package com.taosdata.jdbc;
|
|||
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.FixMethodOrder;
|
||||
import org.junit.Test;
|
||||
import org.junit.runners.MethodSorters;
|
||||
|
||||
import java.sql.*;
|
||||
import java.util.Properties;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||
public class StableTest {
|
||||
static Connection connection = null;
|
||||
static Statement statement = null;
|
||||
|
@ -25,6 +28,9 @@ public class StableTest {
|
|||
}
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata"
|
||||
, properties);
|
||||
|
||||
|
@ -33,7 +39,7 @@ public class StableTest {
|
|||
statement.executeQuery("use " + dbName);
|
||||
}
|
||||
|
||||
@Test
|
||||
// @Test
|
||||
public void createStable() {
|
||||
String sql = "create table " + stbName + " (ts timestamp, v1 int, v2 int) tags (tg nchar(20)) ";
|
||||
|
||||
|
@ -44,7 +50,7 @@ public class StableTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
// @Test
|
||||
public void createTable() {
|
||||
String sql = "create table t1 using " + stbName + " tags (\"beijing\")";
|
||||
|
||||
|
@ -57,6 +63,7 @@ public class StableTest {
|
|||
|
||||
@Test
|
||||
public void describeSTable() {
|
||||
createStable();
|
||||
String sql = "describe " + stbName;
|
||||
int num = 0;
|
||||
System.out.println("describe stable");
|
||||
|
@ -68,6 +75,7 @@ public class StableTest {
|
|||
}
|
||||
num++;
|
||||
}
|
||||
res.close();
|
||||
assertEquals(4, num);
|
||||
} catch (SQLException e) {
|
||||
assert false : "error describe stable" + e.getMessage();
|
||||
|
@ -76,6 +84,7 @@ public class StableTest {
|
|||
|
||||
@Test
|
||||
public void describeTable() {
|
||||
createTable();
|
||||
String sql = "describe t1";
|
||||
int num = 0;
|
||||
System.out.println("describe table");
|
||||
|
@ -87,16 +96,17 @@ public class StableTest {
|
|||
}
|
||||
num++;
|
||||
}
|
||||
res.close();
|
||||
assertEquals(4, num);
|
||||
} catch (SQLException e) {
|
||||
assert false : "error describe stable" + e.getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
// @Test
|
||||
public void validCreateSql() {
|
||||
String sql = "create table t2 using " + stbName + " tags (\"beijing\")";
|
||||
boolean valid = ((TSDBConnection)connection).getConnection().validateCreateTableSql(sql);
|
||||
boolean valid = ((TSDBConnection) connection).getConnection().validateCreateTableSql(sql);
|
||||
assertEquals(true, valid);
|
||||
}
|
||||
|
||||
|
@ -106,6 +116,8 @@ public class StableTest {
|
|||
statement.executeUpdate("drop database " + dbName);
|
||||
statement.close();
|
||||
connection.close();
|
||||
Thread.sleep(10);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.taosdata.jdbc;
|
||||
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -26,6 +27,9 @@ public class StatementTest {
|
|||
}
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata"
|
||||
, properties);
|
||||
|
||||
|
@ -156,4 +160,15 @@ public class StatementTest {
|
|||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void close() throws Exception {
|
||||
if (!statement.isClosed()) {
|
||||
statement.executeUpdate("drop database " + dbName);
|
||||
statement.close();
|
||||
connection.close();
|
||||
Thread.sleep(10);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,6 +29,9 @@ public class SubscribeTest {
|
|||
}
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata"
|
||||
, properties);
|
||||
|
||||
|
@ -86,5 +89,6 @@ public class SubscribeTest {
|
|||
statement.executeQuery("drop database " + dbName);
|
||||
statement.close();
|
||||
connection.close();
|
||||
Thread.sleep(10);
|
||||
}
|
||||
}
|
|
@ -13,6 +13,7 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <argp.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
|
@ -34,6 +35,36 @@ typedef struct {
|
|||
char *host[15];
|
||||
} info;
|
||||
|
||||
typedef struct Arguments {
|
||||
char * host;
|
||||
uint16_t port;
|
||||
uint16_t max_port;
|
||||
} SArguments;
|
||||
|
||||
static struct argp_option options[] = {
|
||||
{0, 'h', "host", 0, "The host to connect to TDEngine. Default is localhost.", 0},
|
||||
{0, 'p', "port", 0, "The TCP or UDP port number to use for the connection. Default is 6020.", 1},
|
||||
{0, 'm', "max port", 0, "The max TCP or UDP port number to use for the connection. Default is 6050.", 2}};
|
||||
|
||||
static error_t parse_opt(int key, char *arg, struct argp_state *state) {
|
||||
|
||||
SArguments *arguments = state->input;
|
||||
switch (key) {
|
||||
case 'h':
|
||||
arguments->host = arg;
|
||||
break;
|
||||
case 'p':
|
||||
arguments->port = atoi(arg);
|
||||
break;
|
||||
case 'm':
|
||||
arguments->max_port = atoi(arg);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct argp argp = {options, parse_opt, 0, 0};
|
||||
|
||||
void *checkPort(void *sarg) {
|
||||
info *pinfo = (info *)sarg;
|
||||
int port = pinfo->port;
|
||||
|
@ -97,7 +128,7 @@ void *checkUPort(void *sarg) {
|
|||
|
||||
sprintf(sendbuf, "send msg port_%d by udp", port);
|
||||
|
||||
socklen_t sin_size = sizeof(*(struct sockaddr*)&serverAddr);
|
||||
socklen_t sin_size = sizeof(*(struct sockaddr *)&serverAddr);
|
||||
|
||||
sendto(clientSocket, sendbuf, strlen(sendbuf), 0, (struct sockaddr *)&serverAddr, (int)sin_size);
|
||||
|
||||
|
@ -113,14 +144,19 @@ void *checkUPort(void *sarg) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int port = 6020;
|
||||
char *host = "127.0.0.1";
|
||||
int main(int argc, char *argv[]) {
|
||||
SArguments arguments = {"127.0.0.1", 6020, 6050};
|
||||
|
||||
argp_parse(&argp, argc, argv, 0, 0, &arguments);
|
||||
|
||||
printf("host: %s\tport: %d\tmax_port: %d\n", arguments.host, arguments.port, arguments.max_port);
|
||||
|
||||
int port = arguments.port;
|
||||
char *host = arguments.host;
|
||||
info *tinfo = malloc(sizeof(info));
|
||||
info *uinfo = malloc(sizeof(info));
|
||||
|
||||
for (size_t i = 0; i < 30; i++) {
|
||||
port++;
|
||||
for (; port < arguments.max_port; port++) {
|
||||
printf("For test: %s:%d\n", host, port);
|
||||
|
||||
*tinfo->host = host;
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <argp.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
|
@ -34,6 +35,36 @@ typedef struct {
|
|||
int type; // 0: tcp, 1: udo, default: 0
|
||||
} info;
|
||||
|
||||
typedef struct Arguments {
|
||||
char * host;
|
||||
uint16_t port;
|
||||
uint16_t max_port;
|
||||
} SArguments;
|
||||
|
||||
static struct argp_option options[] = {
|
||||
{0, 'h', "host", 0, "The host to connect to TDEngine. Default is localhost.", 0},
|
||||
{0, 'p', "port", 0, "The TCP or UDP port number to use for the connection. Default is 6020.", 1},
|
||||
{0, 'm', "max port", 0, "The max TCP or UDP port number to use for the connection. Default is 6050.", 2}};
|
||||
|
||||
static error_t parse_opt(int key, char *arg, struct argp_state *state) {
|
||||
|
||||
SArguments *arguments = state->input;
|
||||
switch (key) {
|
||||
case 'h':
|
||||
arguments->host = arg;
|
||||
break;
|
||||
case 'p':
|
||||
arguments->port = atoi(arg);
|
||||
break;
|
||||
case 'm':
|
||||
arguments->max_port = atoi(arg);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct argp argp = {options, parse_opt, 0, 0};
|
||||
|
||||
static void *bindPort(void *sarg) {
|
||||
info *pinfo = (info *)sarg;
|
||||
int port = pinfo->port;
|
||||
|
@ -170,15 +201,21 @@ static void *bindUPort(void *sarg) {
|
|||
}
|
||||
|
||||
|
||||
int main() {
|
||||
int port = 6020;
|
||||
pthread_t *pids = malloc(60 * sizeof(pthread_t));
|
||||
info * infos = malloc(30 * sizeof(info));
|
||||
info * uinfos = malloc(30 * sizeof(info));
|
||||
int main(int argc, char *argv[]) {
|
||||
SArguments arguments = {"127.0.0.1", 6020, 6050};
|
||||
argp_parse(&argp, argc, argv, 0, 0, &arguments);
|
||||
int port = arguments.port;
|
||||
|
||||
for (size_t i = 0; i < 30; i++) {
|
||||
port++;
|
||||
int num = arguments.max_port - arguments.port;
|
||||
|
||||
if (num < 0) {
|
||||
num = 1;
|
||||
}
|
||||
pthread_t *pids = malloc(2 * num * sizeof(pthread_t));
|
||||
info * infos = malloc(num * sizeof(info));
|
||||
info * uinfos = malloc(num * sizeof(info));
|
||||
|
||||
for (size_t i = 0; i < num; i++) {
|
||||
info *pinfo = infos++;
|
||||
pinfo->port = port;
|
||||
|
||||
|
@ -191,14 +228,15 @@ int main() {
|
|||
info *uinfo = uinfos++;
|
||||
uinfo->port = port;
|
||||
uinfo->type = 1;
|
||||
if (pthread_create(pids + 30 + i, NULL, bindUPort, uinfo) != 0) //创建线程
|
||||
port++;
|
||||
if (pthread_create(pids + num + i, NULL, bindUPort, uinfo) != 0) //创建线程
|
||||
{ //创建线程失败
|
||||
printf("创建线程失败: %d.\n", port);
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 30; i++) {
|
||||
for (int i = 0; i < num; i++) {
|
||||
pthread_join(pids[i], NULL);
|
||||
pthread_join(pids[(10 + i)], NULL);
|
||||
pthread_join(pids[(num + i)], NULL);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,66 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
||||
*
|
||||
* This program is free software: you can use, redistribute, and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3
|
||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/socket.h>
|
||||
#include <unistd.h>
|
||||
#define SERVER_PORT 8000
|
||||
#define SIZE 200
|
||||
|
||||
int main() {
|
||||
struct sockaddr_in servaddr, cliaddr;
|
||||
socklen_t cliaddr_len;
|
||||
int client_sockfd;
|
||||
char buf[SIZE];
|
||||
char recvbuf[SIZE];
|
||||
|
||||
int i, n, flag = 0;
|
||||
|
||||
int len, iDataNum;
|
||||
|
||||
client_sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
bzero(&servaddr, sizeof(servaddr));
|
||||
servaddr.sin_family = AF_INET;
|
||||
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
servaddr.sin_port = htons(SERVER_PORT);
|
||||
|
||||
if (connect(client_sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) {
|
||||
printf("Connected error..\n");
|
||||
return 0;
|
||||
}
|
||||
printf("Connected to server..\n");
|
||||
|
||||
/*循环的发送接收信息并打印接收信息(可以按需发送)--recv返回接收到的字节数,send返回发送的字节数*/
|
||||
while (1) {
|
||||
printf("Enter string to send:");
|
||||
scanf("%s", buf);
|
||||
if (!strcmp(buf, "quit")) {
|
||||
break;
|
||||
}
|
||||
len = (sizeof buf);
|
||||
|
||||
recvbuf[0] = '\0';
|
||||
|
||||
iDataNum = recv(client_sockfd, recvbuf, SIZE, 0);
|
||||
|
||||
recvbuf[iDataNum] = '\0';
|
||||
|
||||
printf("%s\n", recvbuf);
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
||||
*
|
||||
* This program is free software: you can use, redistribute, and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3
|
||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/socket.h>
|
||||
#include <unistd.h>
|
||||
#define SERVER_PORT 8000
|
||||
#define SIZE 200
|
||||
|
||||
int main() {
|
||||
struct sockaddr_in servaddr, cliaddr;
|
||||
socklen_t cliaddr_len;
|
||||
int listenfd, connfd;
|
||||
char buf[BUFSIZ];
|
||||
int i, n, flag = 0;
|
||||
|
||||
listenfd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
bzero(&servaddr, sizeof(servaddr));
|
||||
servaddr.sin_family = AF_INET;
|
||||
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
servaddr.sin_port = htons(SERVER_PORT);
|
||||
bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
|
||||
listen(listenfd, 20);
|
||||
|
||||
printf("Accepting connections..\n");
|
||||
while (1) {
|
||||
cliaddr_len = sizeof(cliaddr);
|
||||
connfd = accept(listenfd, (struct sockaddr *)&cliaddr,
|
||||
&cliaddr_len); //如果得不到客户端发来的消息,将会被阻塞,一直等到消息到来
|
||||
n = read(connfd, buf, SIZE); //如果n<=0,表示客户端已断开
|
||||
while (1) {
|
||||
if (n != 0) {
|
||||
for (i = 0; i < n; i++) printf("%c", buf[i]); //输出客户端发来的信息
|
||||
} else {
|
||||
printf("Client say close the connection..\n");
|
||||
break;
|
||||
}
|
||||
n = read(connfd, buf, SIZE);
|
||||
}
|
||||
close(connfd);
|
||||
}
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
#include <netinet/in.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#define SERVER_PORT 8888
|
||||
#define BUFF_LEN 512
|
||||
#define SERVER_IP "172.0.5.182"
|
||||
|
||||
void udp_msg_sender(int fd, struct sockaddr* dst) {}
|
||||
|
||||
/*
|
||||
client:
|
||||
socket-->sendto-->revcfrom-->close
|
||||
*/
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
int client_fd;
|
||||
struct sockaddr_in ser_addr;
|
||||
|
||||
client_fd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (client_fd < 0) {
|
||||
printf("create socket fail!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
memset(&ser_addr, 0, sizeof(ser_addr));
|
||||
ser_addr.sin_family = AF_INET;
|
||||
// ser_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
|
||||
ser_addr.sin_addr.s_addr = htonl(INADDR_ANY); //注意网络序转换
|
||||
ser_addr.sin_port = htons(SERVER_PORT); //注意网络序转换
|
||||
|
||||
socklen_t len;
|
||||
struct sockaddr_in src;
|
||||
while (1) {
|
||||
char buf[BUFF_LEN] = "TEST UDP MSG!\n";
|
||||
len = sizeof(*(struct sockaddr*)&ser_addr);
|
||||
printf("client:%s\n", buf); //打印自己发送的信息
|
||||
sendto(client_fd, buf, BUFF_LEN, 0, (struct sockaddr*)&ser_addr, len);
|
||||
memset(buf, 0, BUFF_LEN);
|
||||
recvfrom(client_fd, buf, BUFF_LEN, 0, (struct sockaddr*)&src, &len); //接收来自server的信息
|
||||
printf("server:%s\n", buf);
|
||||
sleep(1); //一秒发送一次消息
|
||||
}
|
||||
|
||||
close(client_fd);
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -1,63 +0,0 @@
|
|||
#include <netinet/in.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#define SERVER_PORT 8888
|
||||
#define BUFF_LEN 1024
|
||||
|
||||
void handle_udp_msg(int fd) {
|
||||
char buf[BUFF_LEN]; //接收缓冲区,1024字节
|
||||
socklen_t len;
|
||||
int count;
|
||||
struct sockaddr_in clent_addr; // clent_addr用于记录发送方的地址信息
|
||||
while (1) {
|
||||
memset(buf, 0, BUFF_LEN);
|
||||
len = sizeof(clent_addr);
|
||||
count =
|
||||
recvfrom(fd, buf, BUFF_LEN, 0, (struct sockaddr*)&clent_addr, &len); // recvfrom是拥塞函数,没有数据就一直拥塞
|
||||
if (count == -1) {
|
||||
printf("recieve data fail!\n");
|
||||
return;
|
||||
}
|
||||
printf("client:%s\n", buf); //打印client发过来的信息
|
||||
memset(buf, 0, BUFF_LEN);
|
||||
sprintf(buf, "I have recieved %d bytes data!\n", count); //回复client
|
||||
printf("server:%s\n", buf); //打印自己发送的信息给
|
||||
sendto(fd, buf, BUFF_LEN, 0, (struct sockaddr*)&clent_addr,
|
||||
len); //发送信息给client,注意使用了clent_addr结构体指针
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
server:
|
||||
socket-->bind-->recvfrom-->sendto-->close
|
||||
*/
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
int server_fd, ret;
|
||||
struct sockaddr_in ser_addr;
|
||||
|
||||
server_fd = socket(AF_INET, SOCK_DGRAM, 0); // AF_INET:IPV4;SOCK_DGRAM:UDP
|
||||
if (server_fd < 0) {
|
||||
printf("create socket fail!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
memset(&ser_addr, 0, sizeof(ser_addr));
|
||||
ser_addr.sin_family = AF_INET;
|
||||
ser_addr.sin_addr.s_addr = htonl(INADDR_ANY); // IP地址,需要进行网络序转换,INADDR_ANY:本地地址
|
||||
ser_addr.sin_port = htons(SERVER_PORT); //端口号,需要网络序转换
|
||||
|
||||
ret = bind(server_fd, (struct sockaddr*)&ser_addr, sizeof(ser_addr));
|
||||
if (ret < 0) {
|
||||
printf("socket bind fail!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
handle_udp_msg(server_fd); //处理接收到的数据
|
||||
|
||||
close(server_fd);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue