diff --git a/influxdb-csharp.sln b/influxdb-csharp.sln
index c709e6c..35103bb 100644
--- a/influxdb-csharp.sln
+++ b/influxdb-csharp.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26730.3
+VisualStudioVersion = 15.0.27130.2036
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{72DC28B9-37B5-425C-8532-5CA91D253A70}"
EndProject
@@ -31,6 +31,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InfluxDB.Collector", "src\I
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Benchmark", "sample\Benchmark\Benchmark.csproj", "{2A34EE83-FB59-4A41-8BB5-174BE678533E}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InfluxDb.UdpSupport.ConsoleTest", "test\Consoles\InfluxDb.UdpSupport.ConsoleTest\InfluxDb.UdpSupport.ConsoleTest.csproj", "{1B138F1D-A772-4656-9142-442DEFB969E5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample-UDP-Support", "sample\Sample-UDP-Support\Sample-UDP-Support.csproj", "{62A1A1E7-CCF5-49D9-B462-F11EEF7F5591}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -57,6 +61,14 @@ Global
{2A34EE83-FB59-4A41-8BB5-174BE678533E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2A34EE83-FB59-4A41-8BB5-174BE678533E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A34EE83-FB59-4A41-8BB5-174BE678533E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1B138F1D-A772-4656-9142-442DEFB969E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1B138F1D-A772-4656-9142-442DEFB969E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1B138F1D-A772-4656-9142-442DEFB969E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1B138F1D-A772-4656-9142-442DEFB969E5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {62A1A1E7-CCF5-49D9-B462-F11EEF7F5591}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {62A1A1E7-CCF5-49D9-B462-F11EEF7F5591}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {62A1A1E7-CCF5-49D9-B462-F11EEF7F5591}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {62A1A1E7-CCF5-49D9-B462-F11EEF7F5591}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -67,6 +79,8 @@ Global
{DC6028D6-ED1D-4857-B5EB-28BA05E3F531} = {CD65EE64-FDA8-4ED9-A7F2-81BDD9F64C64}
{F690F3E3-D9F0-441A-9E70-4F70998BDD1B} = {72DC28B9-37B5-425C-8532-5CA91D253A70}
{2A34EE83-FB59-4A41-8BB5-174BE678533E} = {CD65EE64-FDA8-4ED9-A7F2-81BDD9F64C64}
+ {1B138F1D-A772-4656-9142-442DEFB969E5} = {75C71D21-E6FD-493F-A355-997EEF4DDF11}
+ {62A1A1E7-CCF5-49D9-B462-F11EEF7F5591} = {CD65EE64-FDA8-4ED9-A7F2-81BDD9F64C64}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {AB0C6BCE-235A-4018-8644-7652EC826FF5}
diff --git a/sample/Benchmark/Benchmark.csproj b/sample/Benchmark/Benchmark.csproj
index e279cb4..f4d71e2 100644
--- a/sample/Benchmark/Benchmark.csproj
+++ b/sample/Benchmark/Benchmark.csproj
@@ -1,7 +1,7 @@
- net46
+ net461
Sample
Sample
@@ -10,8 +10,8 @@
-
-
+
+
diff --git a/sample/Sample-UDP-Support/App.config b/sample/Sample-UDP-Support/App.config
new file mode 100644
index 0000000..731f6de
--- /dev/null
+++ b/sample/Sample-UDP-Support/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sample/Sample-UDP-Support/Program.cs b/sample/Sample-UDP-Support/Program.cs
new file mode 100644
index 0000000..780e289
--- /dev/null
+++ b/sample/Sample-UDP-Support/Program.cs
@@ -0,0 +1,73 @@
+using InfluxDB.Collector;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Threading.Tasks;
+
+// influx-db command line:
+// start with
+// # influx
+// # show databases
+// # CREATE DATABASE {name}
+// # DROP DATABASE {name}
+// # precision rfc3339
+// # use
+// # SHOW MEASUREMENTS
+// # SHOW MEASUREMENTS WITH MEASUREMENT =~ /v1\..*/ -- all fields from measurements that start with 'v1.'
+// # SHOW SERIES
+// # SHOW SERIES [FROM [WHERE ='']]
+// # DROP SERIES FROM /v1.*\.end/
+// # SHOW TAG KEYS
+// # SHOW TAG KEYS FROM "v1.cos"
+// # SHOW FIELD KEYS
+// # SHOW FIELD KEYS FROM /v1\..*\.sin/ -- all fields from series that start with 'v1.' and end with '.sin'
+
+/*
+# influx
+docker run --name influx -p 8086:8086 -p 8089:8089/udp -p 8088:8088 -v C:\Docker\Volumes\influxdb\db:/var/lib/influxdb -v C:\Docker\Volumes\influxdb\config\influxdb.conf:/etc/influxdb/influxdb.conf:ro influxdb -config /etc/influxdb/influxdb.conf
+docker run -d -p 8083:8083 -p 8086:8086 -p 8089:4444/udp --expose 8083 --expose 8086 --expose 4444 -e UDP_DB="playground" tutum/influxdb
+
+*/
+namespace Sample
+{
+ public static class Program
+ {
+ public static void Main(string[] args)
+ {
+ Collect().Wait();
+
+ Console.ReadKey();
+ }
+
+ async static Task Collect()
+ {
+ var process = Process.GetCurrentProcess();
+
+ Metrics.Collector = new CollectorConfiguration()
+ .Tag.With("host", Environment.GetEnvironmentVariable("COMPUTERNAME"))
+ .Tag.With("os", Environment.GetEnvironmentVariable("OS"))
+ .Tag.With("process", Path.GetFileName(process.MainModule.FileName))
+ .Batch.AtInterval(TimeSpan.FromSeconds(2))
+ //.WriteTo.InfluxDB("http://localhost:8086", "data")
+ .WriteTo.InfluxDB("udp://localhost:8089", "data")
+ .CreateCollector();
+
+ while (true)
+ {
+ Metrics.Increment("iterations");
+
+ Metrics.Write("cpu_time",
+ new Dictionary
+ {
+ { "value", process.TotalProcessorTime.TotalMilliseconds },
+ { "user", process.UserProcessorTime.TotalMilliseconds }
+ });
+
+ Metrics.Measure("working_set", process.WorkingSet64);
+
+ await Task.Delay(1000);
+ }
+ }
+ }
+}
diff --git a/sample/Sample-UDP-Support/Properties/AssemblyInfo.cs b/sample/Sample-UDP-Support/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..e675b47
--- /dev/null
+++ b/sample/Sample-UDP-Support/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Sample-UDP-Support")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Sample-UDP-Support")]
+[assembly: AssemblyCopyright("Copyright © 2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("62a1a1e7-ccf5-49d9-b462-f11eef7f5591")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/sample/Sample-UDP-Support/Sample-UDP-Support.csproj b/sample/Sample-UDP-Support/Sample-UDP-Support.csproj
new file mode 100644
index 0000000..c4b4f3d
--- /dev/null
+++ b/sample/Sample-UDP-Support/Sample-UDP-Support.csproj
@@ -0,0 +1,63 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {62A1A1E7-CCF5-49D9-B462-F11EEF7F5591}
+ Exe
+ Sample_UDP_Support
+ Sample-UDP-Support
+ v4.6.1
+ 512
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {f690f3e3-d9f0-441a-9e70-4f70998bdd1b}
+ InfluxDB.Collector
+
+
+ {069e0ac5-a2cf-4584-89a7-f475276e244c}
+ InfluxDB.LineProtocol
+
+
+
+
\ No newline at end of file
diff --git a/sample/Sample-UDP-Support/packages.config b/sample/Sample-UDP-Support/packages.config
new file mode 100644
index 0000000..2b5b5a8
--- /dev/null
+++ b/sample/Sample-UDP-Support/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/sample/Sample/Sample.csproj b/sample/Sample/Sample.csproj
index 9a37e34..d713742 100644
--- a/sample/Sample/Sample.csproj
+++ b/sample/Sample/Sample.csproj
@@ -1,7 +1,7 @@
- net452;netcoreapp1.0
+ net461;netcoreapp2.0
Sample
Sample
diff --git a/src/InfluxDB.Collector/Configuration/PipelinedCollectorEmitConfiguration.cs b/src/InfluxDB.Collector/Configuration/PipelinedCollectorEmitConfiguration.cs
index 1a72208..81666b1 100644
--- a/src/InfluxDB.Collector/Configuration/PipelinedCollectorEmitConfiguration.cs
+++ b/src/InfluxDB.Collector/Configuration/PipelinedCollectorEmitConfiguration.cs
@@ -11,9 +11,10 @@ class PipelinedCollectorEmitConfiguration : CollectorEmitConfiguration
{
readonly CollectorConfiguration _configuration;
readonly List> _emitters = new List>();
- LineProtocolClient _client;
+ private ILineProtocolClient _client;
- public PipelinedCollectorEmitConfiguration(CollectorConfiguration configuration)
+ public PipelinedCollectorEmitConfiguration(
+ CollectorConfiguration configuration)
{
if (configuration == null) throw new ArgumentNullException(nameof(configuration));
_configuration = configuration;
@@ -21,7 +22,10 @@ public PipelinedCollectorEmitConfiguration(CollectorConfiguration configuration)
public override CollectorConfiguration InfluxDB(Uri serverBaseAddress, string database, string username = null, string password = null)
{
- _client = new LineProtocolClient(serverBaseAddress, database, username, password);
+ if (string.Compare(serverBaseAddress.Scheme, "udp", ignoreCase: true) == 0)
+ _client = new LineProtocolUdpClient(serverBaseAddress, database, username, password);
+ else
+ _client = new LineProtocolClient(serverBaseAddress, database, username, password);
return _configuration;
}
diff --git a/src/InfluxDB.Collector/InfluxDB.Collector.csproj b/src/InfluxDB.Collector/InfluxDB.Collector.csproj
index b4c2f63..e902178 100644
--- a/src/InfluxDB.Collector/InfluxDB.Collector.csproj
+++ b/src/InfluxDB.Collector/InfluxDB.Collector.csproj
@@ -3,7 +3,7 @@
A minimal metrics collection API for InfluxDB
influxdb-csharp Contributors
- net45;netstandard1.3
+ netstandard2.0
true
InfluxDB.Collector
1.1.1
@@ -17,22 +17,15 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/src/InfluxDB.Collector/Pipeline/Emit/HttpLineProtocolEmitter.cs b/src/InfluxDB.Collector/Pipeline/Emit/HttpLineProtocolEmitter.cs
index 78988b9..529cb42 100644
--- a/src/InfluxDB.Collector/Pipeline/Emit/HttpLineProtocolEmitter.cs
+++ b/src/InfluxDB.Collector/Pipeline/Emit/HttpLineProtocolEmitter.cs
@@ -7,9 +7,9 @@ namespace InfluxDB.Collector.Pipeline.Emit
{
class HttpLineProtocolEmitter : IDisposable, IPointEmitter
{
- readonly LineProtocolClient _client;
+ readonly ILineProtocolClient _client;
- public HttpLineProtocolEmitter(LineProtocolClient client)
+ public HttpLineProtocolEmitter(ILineProtocolClient client)
{
if (client == null) throw new ArgumentNullException(nameof(client));
_client = client;
diff --git a/src/InfluxDB.LineProtocol/Client/ILineProtocolClient.cs b/src/InfluxDB.LineProtocol/Client/ILineProtocolClient.cs
new file mode 100644
index 0000000..65dad59
--- /dev/null
+++ b/src/InfluxDB.LineProtocol/Client/ILineProtocolClient.cs
@@ -0,0 +1,16 @@
+using System.Threading;
+using System.Threading.Tasks;
+using InfluxDB.LineProtocol.Payload;
+
+namespace InfluxDB.LineProtocol.Client
+{
+ public interface ILineProtocolClient
+ {
+ Task SendAsync(
+ LineProtocolWriter lineProtocolWriter,
+ CancellationToken cancellationToken = default(CancellationToken));
+ Task WriteAsync(
+ LineProtocolPayload payload,
+ CancellationToken cancellationToken = default(CancellationToken));
+ }
+}
\ No newline at end of file
diff --git a/src/InfluxDB.LineProtocol/Client/LineProtocolClient.cs b/src/InfluxDB.LineProtocol/Client/LineProtocolClient.cs
index 8737141..279962c 100644
--- a/src/InfluxDB.LineProtocol/Client/LineProtocolClient.cs
+++ b/src/InfluxDB.LineProtocol/Client/LineProtocolClient.cs
@@ -1,50 +1,45 @@
using InfluxDB.LineProtocol.Payload;
using System;
using System.IO;
+using System.Net;
using System.Net.Http;
+using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace InfluxDB.LineProtocol.Client
{
- public class LineProtocolClient
+ public class LineProtocolClient : LineProtocolClientBase
{
- readonly HttpClient _httpClient;
- readonly string _database, _username, _password;
+ private readonly HttpClient _httpClient;
public LineProtocolClient(Uri serverBaseAddress, string database, string username = null, string password = null)
: this(new HttpClientHandler(), serverBaseAddress, database, username, password)
{
}
- protected LineProtocolClient(HttpMessageHandler handler, Uri serverBaseAddress, string database, string username, string password)
+ protected LineProtocolClient(
+ HttpMessageHandler handler,
+ Uri serverBaseAddress,
+ string database,
+ string username,
+ string password)
+ :base(serverBaseAddress, database, username, password)
{
- if (serverBaseAddress == null) throw new ArgumentNullException(nameof(serverBaseAddress));
- if (string.IsNullOrEmpty(database)) throw new ArgumentException("A database must be specified");
+ if (serverBaseAddress == null)
+ throw new ArgumentNullException(nameof(serverBaseAddress));
+ if (string.IsNullOrEmpty(database))
+ throw new ArgumentException("A database must be specified");
// Overload that allows injecting handler is protected to avoid HttpMessageHandler being part of our public api which would force clients to reference System.Net.Http when using the lib.
_httpClient = new HttpClient(handler) { BaseAddress = serverBaseAddress };
- _database = database;
- _username = username;
- _password = password;
}
- public Task WriteAsync(LineProtocolPayload payload, CancellationToken cancellationToken = default(CancellationToken))
- {
- var stringWriter = new StringWriter();
-
- payload.Format(stringWriter);
-
- return SendAsync(stringWriter.ToString(), Precision.Nanoseconds, cancellationToken);
- }
-
- public Task SendAsync(LineProtocolWriter lineProtocolWriter, CancellationToken cancellationToken = default(CancellationToken))
- {
- return SendAsync(lineProtocolWriter.ToString(), lineProtocolWriter.Precision, cancellationToken);
- }
-
- private async Task SendAsync(string payload, Precision precision, CancellationToken cancellationToken = default(CancellationToken))
+ protected override async Task OnSendAsync(
+ string payload,
+ Precision precision,
+ CancellationToken cancellationToken = default(CancellationToken))
{
var endpoint = $"write?db={Uri.EscapeDataString(_database)}";
if (!string.IsNullOrEmpty(_username))
diff --git a/src/InfluxDB.LineProtocol/Client/LineProtocolClientBase.cs b/src/InfluxDB.LineProtocol/Client/LineProtocolClientBase.cs
new file mode 100644
index 0000000..d7bb5ca
--- /dev/null
+++ b/src/InfluxDB.LineProtocol/Client/LineProtocolClientBase.cs
@@ -0,0 +1,49 @@
+using InfluxDB.LineProtocol.Payload;
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Http;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace InfluxDB.LineProtocol.Client
+{
+ public abstract class LineProtocolClientBase : ILineProtocolClient
+ {
+ protected readonly string _database, _username, _password;
+
+ protected LineProtocolClientBase(Uri serverBaseAddress, string database, string username, string password)
+ {
+ if (serverBaseAddress == null)
+ throw new ArgumentNullException(nameof(serverBaseAddress));
+ if (string.IsNullOrEmpty(database))
+ throw new ArgumentException("A database must be specified");
+
+ // Overload that allows injecting handler is protected to avoid HttpMessageHandler being part of our public api which would force clients to reference System.Net.Http when using the lib.
+ _database = database;
+ _username = username;
+ _password = password;
+ }
+
+ public Task WriteAsync(LineProtocolPayload payload, CancellationToken cancellationToken = default(CancellationToken))
+ {
+ var stringWriter = new StringWriter();
+
+ payload.Format(stringWriter);
+
+ return OnSendAsync(stringWriter.ToString(), Precision.Nanoseconds, cancellationToken);
+ }
+
+ public Task SendAsync(LineProtocolWriter lineProtocolWriter, CancellationToken cancellationToken = default(CancellationToken))
+ {
+ return OnSendAsync(lineProtocolWriter.ToString(), lineProtocolWriter.Precision, cancellationToken);
+ }
+
+ protected abstract Task OnSendAsync(
+ string payload,
+ Precision precision,
+ CancellationToken cancellationToken = default(CancellationToken));
+ }
+}
diff --git a/src/InfluxDB.LineProtocol/Client/LineProtocolUdpClient.cs b/src/InfluxDB.LineProtocol/Client/LineProtocolUdpClient.cs
new file mode 100644
index 0000000..e76be29
--- /dev/null
+++ b/src/InfluxDB.LineProtocol/Client/LineProtocolUdpClient.cs
@@ -0,0 +1,46 @@
+using InfluxDB.LineProtocol.Payload;
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Http;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace InfluxDB.LineProtocol.Client
+{
+ public class LineProtocolUdpClient : LineProtocolClientBase
+ {
+ private readonly UdpClient _udpClient;
+ private readonly string _udpHostName;
+ private readonly int _udpPort;
+
+ public LineProtocolUdpClient(
+ Uri serverBaseAddress,
+ string database,
+ string username = null,
+ string password = null)
+ :base(serverBaseAddress, database, username, password)
+ {
+ if (serverBaseAddress == null)
+ throw new ArgumentNullException(nameof(serverBaseAddress));
+ if (string.IsNullOrEmpty(database))
+ throw new ArgumentException("A database must be specified");
+
+ _udpHostName = serverBaseAddress.Host;
+ _udpPort = serverBaseAddress.Port;
+ _udpClient = new UdpClient();
+ }
+
+ protected override async Task OnSendAsync(
+ string payload,
+ Precision precision,
+ CancellationToken cancellationToken = default(CancellationToken))
+ {
+ var buffer = Encoding.UTF8.GetBytes(payload);
+ int len = await _udpClient.SendAsync(buffer, buffer.Length, _udpHostName, _udpPort);
+ return new LineProtocolWriteResult(len == buffer.Length, null);
+ }
+ }
+}
diff --git a/src/InfluxDB.LineProtocol/InfluxDB.LineProtocol.csproj b/src/InfluxDB.LineProtocol/InfluxDB.LineProtocol.csproj
index d9c3a15..5b7facb 100644
--- a/src/InfluxDB.LineProtocol/InfluxDB.LineProtocol.csproj
+++ b/src/InfluxDB.LineProtocol/InfluxDB.LineProtocol.csproj
@@ -3,7 +3,7 @@
A .NET library for efficiently sending time series to InfluxDB
influxdb-csharp Contributors
- net45;netstandard1.3
+ netstandard2.0
1.1.1
true
InfluxDB.LineProtocol
@@ -16,17 +16,12 @@
true
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/App.config b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/App.config
new file mode 100644
index 0000000..016d28f
--- /dev/null
+++ b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/InfluxDb.UdpSupport.ConsoleTest.csproj b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/InfluxDb.UdpSupport.ConsoleTest.csproj
new file mode 100644
index 0000000..6a88d2a
--- /dev/null
+++ b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/InfluxDb.UdpSupport.ConsoleTest.csproj
@@ -0,0 +1,62 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {1B138F1D-A772-4656-9142-442DEFB969E5}
+ Exe
+ InfluxDb.UdpSupport.ConsoleTest
+ InfluxDb.UdpSupport.ConsoleTest
+ v4.7
+ 512
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {f690f3e3-d9f0-441a-9e70-4f70998bdd1b}
+ InfluxDB.Collector
+
+
+ {069e0ac5-a2cf-4584-89a7-f475276e244c}
+ InfluxDB.LineProtocol
+
+
+
+
\ No newline at end of file
diff --git a/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/Program.cs b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/Program.cs
new file mode 100644
index 0000000..c2d0f85
--- /dev/null
+++ b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/Program.cs
@@ -0,0 +1,89 @@
+using InfluxDB.Collector;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+// influx-db command line:
+// start with
+// # influx
+// # show databases
+// # CREATE DATABASE {name}
+// # DROP DATABASE {name}
+// # precision rfc3339
+// # use
+// # SHOW MEASUREMENTS
+// # SHOW MEASUREMENTS WITH MEASUREMENT =~ /v1\..*/ -- all fields from measurements that start with 'v1.'
+// # SHOW SERIES
+// # SHOW SERIES [FROM [WHERE ='']]
+// # DROP SERIES FROM /v1.*\.end/
+// # SHOW TAG KEYS
+// # SHOW TAG KEYS FROM "v1.cos"
+// # SHOW FIELD KEYS
+// # SHOW FIELD KEYS FROM /v1\..*\.sin/ -- all fields from series that start with 'v1.' and end with '.sin'
+
+/*
+# influx
+docker run --name influx -p 8086:8086 -p 8089:8089/udp -p 8088:8088 -v C:\Docker\Volumes\influxdb\db:/var/lib/influxdb -v C:\Docker\Volumes\influxdb\config\influxdb.conf:/etc/influxdb/influxdb.conf:ro influxdb -config /etc/influxdb/influxdb.conf
+docker run -d -p 8083:8083 -p 8086:8086 -p 8089:4444/udp --expose 8083 --expose 8086 --expose 4444 -e UDP_DB="playground" tutum/influxdb
+
+*/
+
+namespace InfluxDb.UdpSupport.ConsoleTest
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ Task t = ListenAsync();
+ var process = Process.GetCurrentProcess();
+
+ Metrics.Collector = new CollectorConfiguration()
+ .Tag.With("process", Path.GetFileName(process.Id.ToString()))
+ .Batch.AtInterval(TimeSpan.FromSeconds(2))
+ .WriteTo.InfluxDB("udp://localhost:8089", "data")
+ .CreateCollector();
+
+ int i = 0;
+ while (true)
+ {
+ Metrics.Collector.Increment("test", i++ % 10);
+ Thread.Sleep(500);
+ }
+ }
+
+ private static async Task ListenAsync()
+ {
+ await Task.Delay(1);
+ var udpClient = new UdpClient(8999);
+ while (true)
+ {
+ try
+ {
+ UdpReceiveResult result = await udpClient.ReceiveAsync();
+ Byte[] receiveBytes = result.Buffer;
+ string returnData = Encoding.UTF8.GetString(receiveBytes);
+ IPEndPoint remoteIpEndPoint = result.RemoteEndPoint;
+
+ // Uses the IPEndPoint object to determine which of these two hosts responded.
+ Console.WriteLine($"This message was sent from {remoteIpEndPoint.Address} on their port number {remoteIpEndPoint.Port}");
+ Console.WriteLine("This is the message you received:");
+ Console.ForegroundColor = ConsoleColor.Yellow;
+ Console.WriteLine(returnData);
+ Console.ResetColor();
+ Console.WriteLine("-----------------------------------------------------------------");
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e.ToString());
+ }
+ }
+ }
+ }
+}
diff --git a/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/Properties/AssemblyInfo.cs b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..430ca65
--- /dev/null
+++ b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("InfluxDb.UdpSupport.ConsoleTest")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("InfluxDb.UdpSupport.ConsoleTest")]
+[assembly: AssemblyCopyright("Copyright © 2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("1b138f1d-a772-4656-9142-442defb969e5")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/test/InfluxDB.LineProtocol.Tests/InfluxDB.LineProtocol.Tests.csproj b/test/InfluxDB.LineProtocol.Tests/InfluxDB.LineProtocol.Tests.csproj
index 37f87dc..44d713c 100644
--- a/test/InfluxDB.LineProtocol.Tests/InfluxDB.LineProtocol.Tests.csproj
+++ b/test/InfluxDB.LineProtocol.Tests/InfluxDB.LineProtocol.Tests.csproj
@@ -1,12 +1,10 @@
- net452;netcoreapp1.0
+ netcoreapp2.0
InfluxDB.LineProtocol.Tests
InfluxDB.LineProtocol.Tests
- true
- $(PackageTargetFallback);dnxcore50;portable-net45+win8
- 1.0.4
+ 2.0.0
@@ -15,11 +13,11 @@
-
-
-
-
-
+
+
+
+
+