blob: 7b2e755d1c81818a5fd295b2f9add8ee3ce04a23 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace Apache.Ignite.Core.Tests.Client
{
using System.Linq;
using Apache.Ignite.Core.Client;
using Apache.Ignite.Core.Impl.Client;
using NUnit.Framework;
/// <summary>
/// Tests for <see cref="Endpoint"/> class.
/// </summary>
public class EndpointTest
{
[Test]
public void GetEndpoints_InvalidConfigFormat_ThrowsIgniteClientException()
{
var ex = AssertThrowsClientException("");
Assert.AreEqual("IgniteClientConfiguration.Endpoints[...] can't be null or whitespace.", ex.Message);
ex = AssertThrowsClientException("host:");
Assert.AreEqual(
"Unrecognized format of IgniteClientConfiguration.Endpoint, failed to parse port: host:",
ex.Message);
ex = AssertThrowsClientException("host:port");
Assert.AreEqual(
"Unrecognized format of IgniteClientConfiguration.Endpoint, failed to parse port: host:port",
ex.Message);
ex = AssertThrowsClientException("host:1..");
Assert.AreEqual(
"Unrecognized format of IgniteClientConfiguration.Endpoint, failed to parse port: host:1..",
ex.Message);
ex = AssertThrowsClientException("host:1..2..3");
Assert.AreEqual(
"Unrecognized format of IgniteClientConfiguration.Endpoint: host:1..2..3",
ex.Message);
}
[Test]
public void GetEndpoints_ParsesPortsAndRanges()
{
const string ip = "1.2.3.4";
const string host = "example.com";
const int port = 678;
const int port2 = 680;
var ipWithDefaultPort = Endpoint.GetEndpoints(new IgniteClientConfiguration(ip)).Single();
Assert.AreEqual(ip, ipWithDefaultPort.Host);
Assert.AreEqual(IgniteClientConfiguration.DefaultPort, ipWithDefaultPort.Port);
Assert.AreEqual(0, ipWithDefaultPort.PortRange);
var ipWithCustomPort = Endpoint
.GetEndpoints(new IgniteClientConfiguration(string.Format("{0}:{1}", ip, port)))
.Single();
Assert.AreEqual(ip, ipWithCustomPort.Host);
Assert.AreEqual(port, ipWithCustomPort.Port);
Assert.AreEqual(0, ipWithCustomPort.PortRange);
var ipWithPortRange = Endpoint
.GetEndpoints(new IgniteClientConfiguration(string.Format("{0}:{1}..{2}", ip, port, port2)))
.Single();
Assert.AreEqual(ip, ipWithPortRange.Host);
Assert.AreEqual(port, ipWithPortRange.Port);
Assert.AreEqual(port2 - port, ipWithPortRange.PortRange);
var hostWithDefaultPort = Endpoint.GetEndpoints(new IgniteClientConfiguration(host)).Single();
Assert.AreEqual(host, hostWithDefaultPort.Host);
Assert.AreEqual(IgniteClientConfiguration.DefaultPort, hostWithDefaultPort.Port);
Assert.AreEqual(0, hostWithDefaultPort.PortRange);
var hostWithCustomPort = Endpoint
.GetEndpoints(new IgniteClientConfiguration(string.Format("{0}:{1}", host, port)))
.Single();
Assert.AreEqual(host, hostWithCustomPort.Host);
Assert.AreEqual(port, hostWithCustomPort.Port);
Assert.AreEqual(0, hostWithCustomPort.PortRange);
var hostWithPortRange = Endpoint
.GetEndpoints(new IgniteClientConfiguration(string.Format("{0}:{1}..{2}", host, port, port2)))
.Single();
Assert.AreEqual(host, hostWithPortRange.Host);
Assert.AreEqual(port, hostWithPortRange.Port);
Assert.AreEqual(port2 - port, hostWithPortRange.PortRange);
}
private static IgniteClientException AssertThrowsClientException(string endpoint)
{
var endpoints = Endpoint.GetEndpoints(new IgniteClientConfiguration(endpoint));
// ReSharper disable once ReturnValueOfPureMethodIsNotUsed
return Assert.Throws<IgniteClientException>(() => endpoints.ToList());
}
}
}