blob: 0ad0ae4779e48f29e0b8eb2950bd7965a546f88d [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.
*/
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
#pragma warning disable 618
namespace Apache.Geode.Client.UnitTests
{
using NUnit.Framework;
using Apache.Geode.DUnitFramework;
using Apache.Geode.Client;
using System.Management;
public class PropsStringToObject
{
public PropsStringToObject(Properties<string, object> target)
{
m_target = target;
}
public void Visit(string key, string val)
{
if (key == "security-signature")
{
Util.Log("VJR: Got SIG as " + val);
string[] stringbytes = val.Split(' ');
byte[] credentialbytes = new byte[stringbytes.Length - 1];
int position = 0;
foreach (string item in stringbytes)
{
Util.Log("VJR: Parsing byte " + item);
if (string.IsNullOrEmpty(item)) continue;
credentialbytes[position++] = byte.Parse(item);
}
m_target.Insert(key, credentialbytes);
}
else
{
m_target.Insert(key, val);
}
}
private Properties<string, object> m_target;
}
public class PutGetTestsAD : MarshalByRefObject
{
private static string m_regionName;
private static PutGetTests m_putGetTestInstance = new PutGetTests();
public int InitKeys(UInt32 typeId, int numKeys, int maxSize)
{
return m_putGetTestInstance.InitKeys(typeId, numKeys, maxSize);
}
public void InitValues(UInt32 typeId, int numValues, int maxSize)
{
m_putGetTestInstance.InitValues(typeId, numValues, maxSize);
}
public void DoPuts()
{
m_putGetTestInstance.DoPuts();
}
public void DoKeyChecksumPuts()
{
m_putGetTestInstance.DoKeyChecksumPuts();
}
public void DoValChecksumPuts()
{
m_putGetTestInstance.DoValChecksumPuts();
}
public void DoGetsVerify()
{
m_putGetTestInstance.DoGetsVerify();
}
public void InvalidateRegion(string regionName)
{
CacheHelper.InvalidateRegion<object, object>(regionName, true, true);
}
public void DoRunQuery()
{
m_putGetTestInstance.DoRunQuery();
}
public void SetRegion(string regionName)
{
m_regionName = regionName;
m_putGetTestInstance.SetRegion(regionName);
}
public void DoGets()
{
m_putGetTestInstance.DoGets();
}
public void pdxPutGet(bool caching, bool readPdxSerialized)
{
CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxTests.PdxType.CreateDeserializable);
IRegion<object, object> reg = CacheHelper.GetRegion<object, object>(m_regionName);
PdxTests.PdxType pt = new PdxTests.PdxType();
reg["pi"] = pt;
object pi = null;
if (caching)
{
pi = reg.GetLocalView()["pi"];
}
else
{
pi = reg["pi"];
}
if (readPdxSerialized)
{
int iv = (int)((IPdxInstance)pi).GetField("m_int32");
Assert.AreEqual(iv, pt.Int32);
}
else
{
Assert.AreEqual(pi, pt);
}
}
public void pdxGetPut(bool caching, bool readPdxSerialized)
{
CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxTests.PdxType.CreateDeserializable);
IRegion<object, object> reg = CacheHelper.GetRegion<object, object>(m_regionName);
PdxTests.PdxType pt = new PdxTests.PdxType();
object pi = null;
if (caching)
{
pi = reg.GetLocalView()["pi"];
}
else
{
pi = reg["pi"];
}
if (readPdxSerialized)
{
int iv = (int)((IPdxInstance)pi).GetField("m_int32") + 10;
IWritablePdxInstance wpi = ((IPdxInstance)pi).CreateWriter();
wpi.SetField("m_int32", iv);
reg["pi"] = wpi;
if (caching)
{
pi = reg.GetLocalView()["pi"];
}
else
{
pi = reg["pi"];
}
iv = (int)((IPdxInstance)pi).GetField("m_int32");
Assert.AreEqual(iv, pt.Int32 + 10);
}
else
{
Assert.AreEqual(pi, pt);
}
}
}
public class CacheHelperWrapper : MarshalByRefObject
{
public void CreateTCRegions_Pool_AD<TKey, TValue>(string[] regionNames,
string locators, string poolName, bool clientNotification, bool ssl, bool caching, bool pdxReadSerialized)
{
try
{
Console.WriteLine("creating region1 " + pdxReadSerialized);
CacheHelper.PdxReadSerialized = pdxReadSerialized;
CacheHelper.CreateTCRegion_Pool_AD<TKey, TValue>(regionNames[0], true, caching,
null, locators, poolName, clientNotification, ssl, false);
//CacheHelper.CreateTCRegion_Pool(regionNames[1], false, true,
//null, endpoints, locators, poolName, clientNotification, ssl, false);
// m_regionNames = regionNames;
CacheHelper.PdxReadSerialized = false;
Util.Log("created region " + regionNames[0]);
}
catch (AlreadyConnectedException)
{
Console.WriteLine("Got already connected exception in TEST");
Util.Log("Got already connected exception " + regionNames[0]);
}
}
public void CallDistrinbutedConnect()
{
try
{
//Console.WriteLine(" cakk CallDistrinbutedConnect");
CacheHelper.DSConnectAD();
}
catch (Exception ex)
{
//Console.WriteLine(" cakk CallDistrinbutedConnect 33");
Util.Log(" got AlreadyConnectedException " + ex.Message);
}
}
public void RegisterBuiltins(long dtTime)
{
CacheableHelper.RegisterBuiltinsAD(dtTime);
}
public void InvalidateRegion(string regionName)
{
CacheHelper.InvalidateRegion<object, object>(regionName, true, true);
}
public void CloseCache()
{
CacheHelper.Close();
}
public void SetLogFile(string logFileName)
{
Util.LogFile = logFileName;
}
}
/// <summary>
/// Helper class to create/destroy Distributed System, cache and regions.
/// This class is intentionally not thread-safe.
/// </summary>
public class CacheHelper
{
public static string TestDir
{
get
{
if (m_testDir == null)
{
m_testDir = Util.GetEnvironmentVariable("TESTSRC");
if (m_testDir == null)
{
return ".";
}
}
return m_testDir;
}
}
public static int HOST_PORT_1;
public static int HOST_PORT_2;
public static int HOST_PORT_3;
public static int HOST_PORT_4;
public static bool PdxIgnoreUnreadFields = false;
public static bool PdxReadSerialized = false;
public static int LOCATOR_PORT_1;
public static int LOCATOR_PORT_2;
public static int LOCATOR_PORT_3;
public static int LOCATOR_PORT_4;
#region Private static members and constants
private static DistributedSystem m_dsys = null;
private static bool m_doDisconnect = false;
private static Cache m_cache = null;
private static IRegionService m_cacheForMultiUser = null;
private static IRegion<object, object> m_currRegion = null;
private static string m_gfeDir = null;
private static string m_gfeLogLevel = null;
private static string m_gfeSecLogLevel = null;
private static string m_endpoints = null;
private static string m_locators = null;
private static string m_locatorFirst = null;
private static string m_locatorSecond = null;
private static string[] m_cacheXmls = null;
private static bool m_localServer = true;
private static string m_extraPropertiesFile = null;
private const string DefaultDSName = "dstest";
private const string DefaultCacheName = "cachetest";
private const string JavaServerName = "gfsh.bat";
private const string GeodeName = "gfsh.bat";
private static int JavaMcastPort = -1;
private const string JavaServerStartArgs =
"start server --J=-Xmx512m --J=-Xms128m --J=-XX:+UseConcMarkSweepGC --J=-XX:+UseParNewGC --J=-Xss256k --cache-xml-file=";
private const string JavaServerStopArgs = "stop server";
private const string LocatorStartArgs = "start locator";
private const string LocatorStopArgs = "stop locator";
private const int LocatorPort = 34755;
private const int MaxWaitMillis = 60000;
private static char PathSep = Path.DirectorySeparatorChar;
private static string m_testDir = null;
private static Dictionary<int, string> m_runningJavaServers =
new Dictionary<int, string>();
private static Dictionary<int, string> m_runningLocators =
new Dictionary<int, string>();
private static CacheTransactionManager m_cstxManager = null;
#endregion
#region Public accessors
public static IRegion<object, object> CurrentRegion
{
get
{
return m_currRegion;
}
}
public static CacheTransactionManager CSTXManager
{
get
{
return m_cstxManager;
}
}
public static Cache DCache
{
get
{
return m_cache;
}
set
{
m_cache = value;
}
}
public static string Locators
{
get
{
return m_locators;
}
}
public static string LocatorSecond
{
get
{
return m_locatorSecond;
}
}
public static string LocatorFirst
{
get
{
return m_locatorFirst;
}
}
public static string ExtraPropertiesFile
{
get
{
return m_extraPropertiesFile;
}
}
/*
public static QueryService QueryServiceInstance
{
get
{
return m_cache.GetQueryService();
}
}
* */
public const string DefaultRegionName = "regiontest";
#endregion
#region Functions to initialize or close a cache and distributed system
public static void SetLogging()
{
if (Util.LogFile != null)
{
string logFile = Regex.Replace(Util.LogFile, "\\....$", string.Empty);
LogLevel logLevel;
if (Util.CurrentLogLevel != Util.DefaultLogLevel)
{
logLevel = (LogLevel)Util.CurrentLogLevel;
}
else
{
logLevel = Log.Level();
}
Log.Close();
Log.Init(logLevel, logFile);
}
}
public static void DSConnectAD()
{
m_dsys = DistributedSystem.Connect("DSName", null, m_cache);
}
private static void SetLogConfig(ref Properties<string, string> config)
{
if (Util.LogFile != null)
{
Log.Close();
if (config == null)
{
config = new Properties<string, string>();
}
if (Util.LogFile != null && Util.LogFile.Length > 0)
{
string logFile = Regex.Replace(Util.LogFile, "\\....$", string.Empty);
config.Insert("log-file", logFile);
}
if (Util.CurrentLogLevel != Util.DefaultLogLevel)
{
config.Insert("log-level", Util.CurrentLogLevel.ToString().ToLower());
}
}
}
private static void DSConnect(string dsName, Properties<string, string> config)
{
SetLogConfig(ref config);
m_dsys = DistributedSystem.Connect(dsName, config, m_cache);
}
public static void ConnectName(string dsName)
{
ConnectConfig(dsName, null);
}
public static void ConnectConfig(string dsName, Properties<string, string> config)
{
DSConnect(dsName, config);
}
public static void Init()
{
InitConfig(null, null);
}
public static void InitConfig(Properties<string, string> config, IAuthInitialize authInitialize)
{
InitConfig(config, null, authInitialize);
}
public static void InitConfig(Properties<string, string> config)
{
InitConfig(config, null);
}
public static void InitConfigForDurable_Pool(string locators, int redundancyLevel,
string durableClientId, TimeSpan durableTimeout)
{
InitConfigForDurable_Pool(locators, redundancyLevel, durableClientId, durableTimeout, TimeSpan.FromSeconds(1));
}
public static void InitConfigForDurable_Pool(string locators, int redundancyLevel,
string durableClientId, TimeSpan durableTimeout, TimeSpan ackInterval)
{
Properties<string, string> config = new Properties<string, string>();
config.Insert("durable-client-id", durableClientId);
config.Insert("durable-timeout", durableTimeout.TotalSeconds + "s");
InitConfig(config, null);
CreatePool<object, object>("__TESTPOOL1_", locators, (string)null, redundancyLevel, true,
ackInterval, TimeSpan.FromSeconds(300));
}
public static void InitConfigForDurable_Pool2(string locators, int redundancyLevel,
string durableClientId, TimeSpan durableTimeout, TimeSpan ackInterval, string poolName)
{
Properties<string, string> config = new Properties<string, string>();
config.Insert("durable-client-id", durableClientId);
config.Insert("durable-timeout", durableTimeout.TotalSeconds + "s");
InitConfig(config, null);
CreatePool<object, object>(poolName, locators, (string)null, redundancyLevel, true,
ackInterval, TimeSpan.FromSeconds(300));
}
public static void InitConfigForConflation(string durableClientId, string conflation)
{
Properties<string, string> config = new Properties<string, string>();
config.Insert("durable-client-id", durableClientId);
config.Insert("durable-timeout", "300s");
config.Insert("notify-ack-interval", "1s");
if (conflation != null && conflation.Length > 0)
{
config.Insert("conflate-events", conflation);
}
InitConfig(config, null);
}
static int m_heapLimit = -1;
static int m_delta = -1;
static public void SetHeapLimit(int maxheaplimit, int delta)
{
m_heapLimit = maxheaplimit;
m_delta = delta;
}
static public void UnsetHeapLimit()
{
m_heapLimit = -1;
m_delta = -1;
}
public static void InitConfigForConflation_Pool(string locators,
string durableClientId, string conflation)
{
Properties<string, string> config = new Properties<string, string>();
config.Insert("durable-client-id", durableClientId);
config.Insert("durable-timeout", "300s");
config.Insert("notify-ack-interval", "1s");
if (conflation != null && conflation.Length > 0)
{
config.Insert("conflate-events", conflation);
}
InitConfig(config, null);
CreatePool<object, object>("__TESTPOOL1_", locators, (string)null, 0, true);
}
public static void InitConfig(string cacheXml)
{
InitConfig(null, cacheXml, null);
}
public static void InitConfig(Properties<string, string> config, string cacheXml, IAuthInitialize authIntialize)
{
//Console.WriteLine(" in InitConfig1 " + System.AppDomain.CurrentDomain.Id);
if (cacheXml != null)
{
string duplicateXMLFile = Util.Rand(3536776).ToString() + cacheXml;
createDuplicateXMLFile(cacheXml, duplicateXMLFile);
cacheXml = duplicateXMLFile;
}
if (config == null)
{
config = new Properties<string, string>();
}
if (m_extraPropertiesFile != null)
{
config.Load(m_extraPropertiesFile);
}
if (m_cache == null || m_cache.IsClosed)
{
try
{
CacheHelper.m_doDisconnect = false;
config.Insert("enable-time-statistics", "true");
SetLogConfig(ref config);
if (m_heapLimit != -1)
config.Insert("heap-lru-limit", m_heapLimit.ToString());
if (m_delta != -1)
config.Insert("heap-lru-delta", m_delta.ToString());
config.Insert("enable-time-statistics", "true");
var cf = new CacheFactory(config);
if (cacheXml != null && cacheXml.Length > 0)
{
cf = cf.Set("cache-xml-file", cacheXml);
}
m_cache = cf
.SetPdxIgnoreUnreadFields(PdxIgnoreUnreadFields)
.SetPdxReadSerialized(PdxReadSerialized)
.SetAuthInitialize(authIntialize)
.Create();
PdxIgnoreUnreadFields = false; //reset so next test will have default value
PdxReadSerialized = false;
}
catch (CacheExistsException)
{
m_cache = new CacheFactory(config).Create();
}
}
m_cstxManager = m_cache.CacheTransactionManager;
}
public static void SetExtraPropertiesFile(string fName)
{
m_extraPropertiesFile = fName;
}
public static void InitClient()
{
CacheHelper.Close();
Properties<string, string> config = new Properties<string, string>();
config.Load("geode.properties");
CacheHelper.InitConfig(config);
}
public static void Close()
{
Util.Log("in cache close : " + System.Threading.Thread.GetDomainID());
//if (DistributedSystem.IsConnected)
{
CloseCache();
if (m_doDisconnect)
{
// DistributedSystem.Disconnect();
}
}
m_dsys = null;
m_cacheForMultiUser = null;
}
public static void CloseUserCache(bool keepAlive)
{
//TODO: need to look
m_cacheForMultiUser.Close();
}
public static void CloseCache()
{
Util.Log("A CloseCache " + (m_cache != null ? m_cache.IsClosed.ToString() : "cache is closed"));
if (m_cache != null && !m_cache.IsClosed)
{
m_cache.Close();
}
m_cache = null;
}
public static void CloseKeepAlive()
{
CloseCacheKeepAlive();
m_dsys = null;
}
public static void CloseCacheKeepAlive()
{
if (m_cache != null && !m_cache.IsClosed)
{
m_cache.Close(true);
}
m_cache = null;
}
public static void ReadyForEvents()
{
if (m_cache != null && !m_cache.IsClosed)
{
m_cache.ReadyForEvents();
}
}
#endregion
#region Functions to create or destroy a region
public static IRegion<TKey, TValue> CreateRegion<TKey, TValue>(string name, Apache.Geode.Client.RegionAttributes<TKey, TValue> attrs)
{
Init();
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
//region = m_cache.CreateRegion(name, attrs);
region = m_cache.CreateRegionFactory(RegionShortcut.LOCAL).Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> was not created.");
m_currRegion = region as IRegion<object, object>;
return region;
}
public static IRegion<TKey, TValue> CreateExpirationRegion<TKey, TValue>(
string name, string poolname, ExpirationAction action, TimeSpan entryTimeToLive)
{
Init();
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
region = m_cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY)
.SetEntryTimeToLive(action, entryTimeToLive).SetPoolName(poolname).Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> was not created.");
m_currRegion = region as IRegion<object, object>;
return region;
}
public static IRegion<TKey, TValue> CreateLocalRegionWithETTL<TKey, TValue>(
string name, ExpirationAction action, TimeSpan entryTimeToLive)
{
Init();
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
region = m_cache.CreateRegionFactory(RegionShortcut.LOCAL)
.SetEntryTimeToLive(action, entryTimeToLive).Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> was not created.");
m_currRegion = region as IRegion<object, object>;
return region;
}
public static void CreateDefaultRegion<TKey, TValue>()
{
CreatePlainRegion<TKey, TValue>(DefaultRegionName);
}
public static IRegion<TKey, TValue> CreatePlainRegion<TKey, TValue>(string name)
{
Init();
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
region = m_cache.CreateRegionFactory(RegionShortcut.LOCAL).Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
return region;
}
public static void CreateCachingRegion<TKey, TValue>(string name, bool caching)
{
Init();
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
region = m_cache.CreateRegionFactory(RegionShortcut.PROXY).SetCachingEnabled(caching).Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
}
public static void CreateDistribRegion<TKey, TValue>(string name, bool ack,
bool caching)
{
Init();
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
region = m_cache.CreateRegionFactory(RegionShortcut.PROXY)
.SetCachingEnabled(caching).SetInitialCapacity(100000).Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
}
public static IRegion<TKey, TValue> CreateDistRegion<TKey, TValue>(string rootName,
string name, int size)
{
Init();
CreateCachingRegion<TKey, TValue>(rootName, true);
var regionAttributesFactory = new RegionAttributesFactory<TKey, TValue>();
regionAttributesFactory.SetLruEntriesLimit(0);
regionAttributesFactory.SetInitialCapacity(size);
var regionAttributes = regionAttributesFactory.Create();
IRegion<TKey, TValue> region = ((Region<TKey, TValue>)m_currRegion).CreateSubRegion(name, regionAttributes);
Assert.IsNotNull(region, "SubRegion {0} was not created.", name);
return region;
}
public static IRegion<TKey, TValue> CreateILRegion<TKey, TValue>(string name, bool ack, bool caching,
ICacheListener<TKey, TValue> listener)
{
Init();
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
RegionFactory regionFactory = m_cache.CreateRegionFactory(RegionShortcut.PROXY)
.SetInitialCapacity(100000)
.SetCachingEnabled(caching);
if (listener != null)
{
regionFactory.SetCacheListener(listener);
}
region = regionFactory.Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
return region;
}
public static IRegion<TKey, TValue> CreateSizeRegion<TKey, TValue>(string name, int size, bool ack,
bool caching)
{
Init();
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
region = m_cache.CreateRegionFactory(RegionShortcut.PROXY)
.SetLruEntriesLimit(0).SetInitialCapacity(size)
.SetCachingEnabled(caching).Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
return region;
}
public static IRegion<TKey, TValue> CreateLRURegion<TKey, TValue>(string name, uint size)
{
Init();
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
region = m_cache.CreateRegionFactory(RegionShortcut.LOCAL_ENTRY_LRU)
.SetLruEntriesLimit(size).SetInitialCapacity((int)size)
.Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
return region;
}
public static IRegion<TradeKey, Object> CreateTCRegion2<TradeKey, Object>(string name, bool ack, bool caching,
IPartitionResolver<TradeKey, Object> resolver, string locators, bool clientNotification)
{
Init();
IRegion<TradeKey, Object> region = GetRegion<TradeKey, Object>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
RegionFactory regionFactory = m_cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
regionFactory.SetInitialCapacity(100000);
regionFactory.SetCachingEnabled(caching);
if (resolver != null)
{
Util.Log("resolver is attached {0}", resolver);
regionFactory.SetPartitionResolver(resolver);
}
else
{
Util.Log("resolver is null {0}", resolver);
}
PoolFactory poolFactory = m_cache.GetPoolFactory();
if (locators != null)
{
string[] list = locators.Split(',');
foreach (string item in list)
{
string[] parts = item.Split(':');
poolFactory.AddLocator(parts[0], int.Parse(parts[1]));
Util.Log("AddLocator parts[0] = {0} int.Parse(parts[1]) = {1} ", parts[0], int.Parse(parts[1]));
}
}
else
{
Util.Log("No locators or servers specified for pool");
}
poolFactory.SetSubscriptionEnabled(clientNotification);
poolFactory.Create("__TESTPOOL__");
region = regionFactory.SetPoolName("__TESTPOOL__").Create<TradeKey, Object>(name);
Assert.IsNotNull(region, "IRegion<TradeKey, Object> {0} was not created.", name);
Util.Log("IRegion<TradeKey, Object> {0} has been created with attributes:{1}",
name, RegionAttributesToString(region.Attributes));
return region;
}
public static Pool/*<TKey, TValue>*/ CreatePool<TKey, TValue>(string name, string locators, string serverGroup,
int redundancy, bool subscription)
{
return CreatePool<TKey, TValue>(name, locators, serverGroup, redundancy, subscription, 5, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(300));
}
public static Pool/*<TKey, TValue>*/ CreatePool<TKey, TValue>(string name, string locators, string serverGroup,
int redundancy, bool subscription, bool prSingleHop, bool threadLocal = false)
{
return CreatePool<TKey, TValue>(name, locators, serverGroup, redundancy, subscription, -1, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(300), false, prSingleHop, threadLocal);
}
public static Pool/*<TKey, TValue>*/ CreatePool<TKey, TValue>(string name, string locators, string serverGroup,
int redundancy, bool subscription, int numConnections, bool isMultiuserMode)
{
return CreatePool<TKey, TValue>(name, locators, serverGroup, redundancy, subscription, numConnections, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(300), isMultiuserMode);
}
public static Pool/*<TKey, TValue>*/ CreatePool<TKey, TValue>(string name, string locators, string serverGroup,
int redundancy, bool subscription, int numConnections)
{
return CreatePool<TKey, TValue>(name, locators, serverGroup, redundancy, subscription, numConnections, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(300));
}
public static Pool/*<TKey, TValue>*/ CreatePool<TKey, TValue>(string name, string locators, string serverGroup,
int redundancy, bool subscription, TimeSpan ackInterval, TimeSpan dupCheckLife)
{
return CreatePool<TKey, TValue>(name, locators, serverGroup, redundancy, subscription,
5, ackInterval, dupCheckLife);
}
public static Pool/*<TKey, TValue>*/ CreatePool<TKey, TValue>(string name, string locators, string serverGroup,
int redundancy, bool subscription, int numConnections, TimeSpan ackInterval, TimeSpan dupCheckLife)
{
return CreatePool<TKey, TValue>(name, locators, serverGroup, redundancy, subscription, numConnections, ackInterval, dupCheckLife, false);
}
public static Pool/*<TKey, TValue>*/ CreatePool<TKey, TValue>(string name, string locators, string serverGroup,
int redundancy, bool subscription, int numConnections, TimeSpan ackInterval, TimeSpan dupCheckLife, bool isMultiuserMode, bool prSingleHop = true, bool threadLocal = false)
{
Init();
Pool/*<TKey, TValue>*/ existing = m_cache.GetPoolManager().Find(name);
if (existing == null)
{
PoolFactory/*<TKey, TValue>*/ fact = m_cache.GetPoolFactory();
if (locators != null)
{
string[] list = locators.Split(',');
foreach (string item in list)
{
string[] parts = item.Split(':');
fact.AddLocator(parts[0], int.Parse(parts[1]));
}
}
else
{
Util.Log("No locators or servers specified for pool");
}
if (serverGroup != null)
{
fact.SetServerGroup(serverGroup);
}
fact.SetSubscriptionRedundancy(redundancy);
fact.SetSubscriptionEnabled(subscription);
fact.SetSubscriptionAckInterval(ackInterval);
fact.SetSubscriptionMessageTrackingTimeout(dupCheckLife);
fact.SetMultiuserAuthentication(isMultiuserMode);
fact.SetPRSingleHopEnabled(prSingleHop);
fact.SetThreadLocalConnections(threadLocal);
Util.Log("SingleHop set to {0}", prSingleHop);
Util.Log("ThreadLocal = {0} ", threadLocal);
Util.Log("numConnections set to {0}", numConnections);
if (numConnections >= 0)
{
fact.SetMinConnections(numConnections);
fact.SetMaxConnections(numConnections);
}
Pool/*<TKey, TValue>*/ pool = fact.Create(name);
if (pool == null)
{
Util.Log("Pool creation failed");
}
return pool;
}
else
{
return existing;
}
}
public static IRegion<TKey, TValue> CreateTCRegion_Pool<TKey, TValue>(string name, bool ack, bool caching,
ICacheListener<TKey, TValue> listener, string locators, string poolName, bool clientNotification)
{
return CreateTCRegion_Pool(name, ack, caching, listener, locators, poolName,
clientNotification, false, false);
}
public static void CreateTCRegion_Pool_AD1(string name, bool ack, bool caching,
string locators, string poolName, bool clientNotification, bool cloningEnable)
{
CreateTCRegion_Pool_AD<object, object>(name, ack, caching, null, locators, poolName, clientNotification, false, cloningEnable);
}
public static IRegion<TKey, TValue> CreateTCRegion_Pool_AD<TKey, TValue>(string name, bool ack, bool caching,
ICacheListener<TKey, TValue> listener, string locators, string poolName, bool clientNotification, bool ssl,
bool cloningEnabled)
{
Properties<string, string> sysProps = new Properties<string, string>();
if (ssl)
{
string keystore = Util.GetEnvironmentVariable("CPP_TESTOUT") + "/keystore";
sysProps.Insert("ssl-enabled", "true");
sysProps.Insert("ssl-keystore", keystore + "/client_keystore.pem");
sysProps.Insert("ssl-truststore", keystore + "/client_truststore.pem");
}
InitConfig(sysProps);
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
if (m_cache.GetPoolManager().Find(poolName) == null)
{
PoolFactory/*<TKey, TValue>*/ fact = m_cache.GetPoolFactory();
fact.SetSubscriptionEnabled(clientNotification);
if (locators != null)
{
string[] list = locators.Split(',');
foreach (string item in list)
{
string[] parts = item.Split(':');
fact.AddLocator(parts[0], int.Parse(parts[1]));
}
}
else
{
Util.Log("No locators or servers specified for pool");
}
Pool/*<TKey, TValue>*/ pool = fact.Create(poolName);
if (pool == null)
{
Util.Log("Pool creation failed");
}
}
RegionFactory regionFactory = m_cache.CreateRegionFactory(RegionShortcut.PROXY)
.SetInitialCapacity(100000).SetPoolName(poolName).SetCloningEnabled(cloningEnabled)
.SetCachingEnabled(caching);
if (listener != null)
{
regionFactory.SetCacheListener(listener);
}
else
{
Util.Log("Listener is null {0}", listener);
}
region = regionFactory.Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
Util.Log("IRegion<object, object> {0} has been created with attributes:{1}",
name, RegionAttributesToString<TKey, TValue>(region.Attributes));
return region;
}
public static void CreateTCRegion_Pool_MDS(string name, bool ack, bool caching,
string locators, string poolName, bool clientNotification, bool ssl,
bool cloningEnabled)
{
CacheHelper.CreateTCRegion_Pool<object, object>(name, true, caching,
null, locators, poolName, clientNotification, ssl, false);
}
public static IRegion<TKey, TValue> CreateTCRegion_Pool<TKey, TValue>(string name, bool ack, bool caching,
ICacheListener<TKey, TValue> listener, string locators, string poolName, bool clientNotification, bool ssl,
bool cloningEnabled)
{
if (ssl)
{
Properties<string, string> sysProps = new Properties<string, string>();
string keystore = Util.GetEnvironmentVariable("CPP_TESTOUT") + "/keystore";
sysProps.Insert("ssl-enabled", "true");
sysProps.Insert("ssl-keystore", keystore + "/client_keystore.pem");
sysProps.Insert("ssl-truststore", keystore + "/client_truststore.pem");
InitConfig(sysProps);
}
else
{
Init();
}
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
Pool pl = m_cache.GetPoolManager().Find(poolName);
if (pl != null)
{
Util.Log("Pool is not closed " + poolName);
}
if (pl == null)
{
PoolFactory/*<TKey, TValue>*/ fact = m_cache.GetPoolFactory();
fact.SetSubscriptionEnabled(clientNotification);
if (locators != null)
{
string[] list = locators.Split(',');
foreach (string item in list)
{
string[] parts = item.Split(':');
fact.AddLocator(parts[0], int.Parse(parts[1]));
}
}
else
{
Util.Log("No locators or servers specified for pool");
}
Pool/*<TKey, TValue>*/ pool = fact.Create(poolName);
if (pool == null)
{
Util.Log("Pool creation failed");
}
}
Util.Log(" caching enable " + caching);
RegionFactory regionFactory = m_cache.CreateRegionFactory(RegionShortcut.PROXY)
.SetInitialCapacity(100000).SetPoolName(poolName).SetCloningEnabled(cloningEnabled)
.SetCachingEnabled(caching);
if (listener != null)
{
regionFactory.SetCacheListener(listener);
}
else
{
Util.Log("Listener is null {0}", listener);
}
region = regionFactory.SetPoolName(poolName).Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
Util.Log("IRegion<object, object> {0} has been created with attributes:{1}",
name, RegionAttributesToString(region.Attributes));
return region;
}
public static IRegion<TKey, TValue> CreateTCRegion_Pool2<TKey, TValue>(string name, bool ack, bool caching,
ICacheListener<TKey, TValue> listener, string locators, string poolName, bool clientNotification, bool ssl,
bool cloningEnabled, bool pr)
{
if (ssl)
{
Properties<string, string> sysProps = new Properties<string, string>();
string keystore = Util.GetEnvironmentVariable("CPP_TESTOUT") + "/keystore";
sysProps.Insert("ssl-enabled", "true");
sysProps.Insert("ssl-keystore", keystore + "/client_keystore.pem");
sysProps.Insert("ssl-truststore", keystore + "/client_truststore.pem");
InitConfig(sysProps);
}
else
{
Init();
}
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
if (m_cache.GetPoolManager().Find(poolName) == null)
{
PoolFactory/*<TKey, TValue>*/ fact = m_cache.GetPoolFactory();
fact.SetSubscriptionEnabled(clientNotification);
if (locators != null)
{
string[] list = locators.Split(',');
foreach (string item in list)
{
string[] parts = item.Split(':');
fact.AddLocator(parts[0], int.Parse(parts[1]));
}
}
else
{
Util.Log("No locators or servers specified for pool");
}
Pool/*<TKey, TValue>*/ pool = fact.Create(poolName);
if (pool == null)
{
Util.Log("Pool creation failed");
}
}
RegionFactory regionFactory = m_cache.CreateRegionFactory(RegionShortcut.PROXY)
.SetInitialCapacity(100000).SetPoolName(poolName).SetCloningEnabled(cloningEnabled)
.SetCachingEnabled(caching);
if (listener != null)
{
regionFactory.SetCacheListener(listener);
}
else
{
Util.Log("Listener is null {0}", listener);
}
if (pr)
{
Util.Log("setting custom partition resolver");
regionFactory.SetPartitionResolver(CustomPartitionResolver<object>.Create());
}
else
{
Util.Log("Resolver is null {0}", pr);
}
region = regionFactory.Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
Util.Log("IRegion<object, object> {0} has been created with attributes:{1}",
name, RegionAttributesToString(region.Attributes));
return region;
}
public static IRegion<TKey, TValue> CreateLRUTCRegion_Pool<TKey, TValue>(string name, bool ack, bool caching,
ICacheListener<TKey, TValue> listener, string locators, string poolName, bool clientNotification, uint lru)
{
Init();
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
if (m_cache.GetPoolManager().Find(poolName) == null)
{
PoolFactory/*<TKey, TValue>*/ fact = m_cache.GetPoolFactory();
fact.SetSubscriptionEnabled(clientNotification);
if (locators != null)
{
string[] list = locators.Split(',');
foreach (string item in list)
{
string[] parts = item.Split(':');
fact.AddLocator(parts[0], int.Parse(parts[1]));
}
}
else
{
Util.Log("No locators or servers specified for pool");
}
Pool/*<TKey, TValue>*/ pool = fact.Create(poolName);
if (pool == null)
{
Util.Log("Pool creation failed");
}
}
var sqLiteProps = Properties<string, string>.Create();
sqLiteProps.Insert("PageSize", "65536");
sqLiteProps.Insert("MaxFileSize", "512000000");
sqLiteProps.Insert("MaxPageCount", "1073741823");
String sqlite_dir = "SqLiteRegionData" + Process.GetCurrentProcess().Id.ToString();
sqLiteProps.Insert("PersistenceDirectory", sqlite_dir);
RegionFactory regionFactory = m_cache
.CreateRegionFactory(RegionShortcut.CACHING_PROXY_ENTRY_LRU)
.SetDiskPolicy(DiskPolicyType.Overflows)
.SetInitialCapacity(100000).SetPoolName(poolName)
.SetCachingEnabled(caching).SetLruEntriesLimit(lru)
.SetPersistenceManager("SqLiteImpl", "createSqLiteInstance", sqLiteProps);
if (listener != null)
{
regionFactory.SetCacheListener(listener);
}
else
{
Util.Log("Listener is null {0}", listener);
}
region = regionFactory.Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
Util.Log("IRegion<object, object> {0} has been created with attributes:{1}",
name, RegionAttributesToString(region.Attributes));
return region;
}
public static IRegion<TKey, TValue> CreateTCRegion_Pool<TKey, TValue>(string name, bool ack, bool caching,
ICacheListener<TKey, TValue> listener, string locators, string poolName, bool clientNotification, string serverGroup)
{
Init();
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
if (m_cache.GetPoolManager().Find(poolName) == null)
{
PoolFactory/*<TKey, TValue>*/ fact = m_cache.GetPoolFactory();
fact.SetSubscriptionEnabled(clientNotification);
if (serverGroup != null)
{
fact.SetServerGroup(serverGroup);
}
if (locators != null)
{
string[] list = locators.Split(',');
foreach (string item in list)
{
string[] parts = item.Split(':');
fact.AddLocator(parts[0], int.Parse(parts[1]));
}
}
else
{
Util.Log("No locators or servers specified for pool");
}
Pool/*<TKey, TValue>*/ pool = fact.Create(poolName);
if (pool == null)
{
Util.Log("Pool creation failed");
}
}
RegionFactory regionFactory = m_cache.CreateRegionFactory(RegionShortcut.PROXY)
.SetInitialCapacity(100000).SetPoolName(poolName)
.SetCachingEnabled(caching);
if (listener != null)
{
regionFactory.SetCacheListener(listener);
}
else
{
Util.Log("Listener is null {0}", listener);
}
region = regionFactory.SetPoolName(poolName).SetInitialCapacity(100000).SetCachingEnabled(caching).SetCacheListener(listener).Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
Util.Log("IRegion<object, object> {0} has been created with attributes:{1}",
name, RegionAttributesToString(region.Attributes));
return region;
}
public static IRegion<TKey, TValue> CreateTCRegion_Pool1<TKey, TValue>(string name, bool ack, bool caching,
ICacheListener<TKey, TValue> listener, string locators, string poolName, bool clientNotification, bool ssl,
bool cloningEnabled, IPartitionResolver<int, TValue> pr)
{
if (ssl)
{
Properties<string, string> sysProps = new Properties<string, string>();
string keystore = Util.GetEnvironmentVariable("CPP_TESTOUT") + "/keystore";
sysProps.Insert("ssl-enabled", "true");
sysProps.Insert("ssl-keystore", keystore + "/client_keystore.pem");
sysProps.Insert("ssl-truststore", keystore + "/client_truststore.pem");
InitConfig(sysProps);
}
else
{
Init();
}
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(name);
if ((region != null) && !region.IsDestroyed)
{
region.GetLocalView().DestroyRegion();
Assert.IsTrue(region.IsDestroyed, "IRegion<object, object> {0} was not destroyed.", name);
}
if (m_cache.GetPoolManager().Find(poolName) == null)
{
PoolFactory fact = m_cache.GetPoolFactory();
fact.SetSubscriptionEnabled(clientNotification);
if (locators != null)
{
string[] list = locators.Split(',');
foreach (string item in list)
{
string[] parts = item.Split(':');
fact.AddLocator(parts[0], int.Parse(parts[1]));
}
}
else
{
Util.Log("No locators or servers specified for pool");
}
Pool pool = fact.Create(poolName);
if (pool == null)
{
Util.Log("Pool creation failed");
}
}
RegionFactory regionFactory = m_cache.CreateRegionFactory(RegionShortcut.PROXY)
.SetInitialCapacity(100000).SetPoolName(poolName).SetCloningEnabled(cloningEnabled)
.SetCachingEnabled(caching);
if (listener != null)
{
regionFactory.SetCacheListener(listener);
}
else
{
Util.Log("Listener is null {0}", listener);
}
if (pr != null)
{
Util.Log("setting custom partition resolver {0} ", pr.GetName());
regionFactory.SetPartitionResolver(pr);
}
else
{
Util.Log("Resolver is null {0}", pr);
}
region = regionFactory.Create<TKey, TValue>(name);
Assert.IsNotNull(region, "IRegion<object, object> {0} was not created.", name);
m_currRegion = region as IRegion<object, object>;
Util.Log("IRegion<object, object> {0} has been created with attributes:{1}",
name, RegionAttributesToString(region.Attributes));
return region;
}
public static void DestroyRegion<TKey, TValue>(string name, bool local, bool verify)
{
IRegion<TKey, TValue> region;
if (verify)
{
region = GetVerifyRegion<TKey, TValue>(name);
}
else
{
region = GetRegion<TKey, TValue>(name);
}
if (region != null)
{
if (local)
{
region.GetLocalView().DestroyRegion();
Util.Log("Locally destroyed region {0}", name);
}
else
{
region.DestroyRegion();
Util.Log("Destroyed region {0}", name);
}
}
}
public static void DestroyAllRegions<TKey, TValue>(bool local)
{
if (m_cache != null && !m_cache.IsClosed)
{
IRegion<TKey, TValue>[] regions = /*(Region<TKey, TValue>)*/m_cache.RootRegions<TKey, TValue>();
if (regions != null)
{
foreach (IRegion<TKey, TValue> region in regions)
{
if (local)
{
region.GetLocalView().DestroyRegion();
}
else
{
region.DestroyRegion();
}
}
}
}
}
public static void InvalidateRegionNonGeneric(string name, bool local, bool verify)
{
InvalidateRegion<object, object>(name, local, verify);
}
public static void InvalidateRegion<TKey, TValue>(string name, bool local, bool verify)
{
IRegion<TKey, TValue> region;
if (verify)
{
region = GetVerifyRegion<TKey, TValue>(name);
Util.Log("InvalidateRegion: GetVerifyRegion done for {0}", name);
}
else
{
region = GetRegion<TKey, TValue>(name);
Util.Log("InvalidateRegion: GetRegion done for {0}", name);
}
if (region != null)
{
if (local)
{
Util.Log("Locally invaliding region {0}", name);
region.GetLocalView().InvalidateRegion();
Util.Log("Locally invalidated region {0}", name);
}
else
{
Util.Log("Invalidating region {0}", name);
region.InvalidateRegion();
Util.Log("Invalidated region {0}", name);
}
}
}
#endregion
#region Functions to obtain a region
public static IRegion<TKey, TValue> GetRegion<TKey, TValue>(string path)
{
if (m_cache != null)
{
return m_cache.GetRegion<TKey, TValue>(path);
}
return null;
}
public static Properties<string, object> GetPkcsCredentialsForMU(Properties<string, string> credentials)
{
if (credentials == null)
return null;
var target = Properties<string, object>.Create();
var psto = new PropsStringToObject(target);
credentials.ForEach(new PropertyVisitorGeneric<string, string>(psto.Visit));
return target;
}
public static IRegion<TKey, TValue> GetRegion<TKey, TValue>(string path, Properties<string, string> credentials)
{
if (m_cache != null)
{
Util.Log("GetRegion " + m_cacheForMultiUser);
if (m_cacheForMultiUser == null)
{
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(path);
Assert.IsNotNull(region, "IRegion<object, object> [" + path + "] not found.");
Assert.IsNotNull(region.Attributes.PoolName, "IRegion<object, object> is created without pool.");
Pool/*<TKey, TValue>*/ pool = m_cache.GetPoolManager().Find(region.Attributes.PoolName);
Assert.IsNotNull(pool, "Pool is null in GetVerifyRegion.");
//m_cacheForMultiUser = pool.CreateSecureUserCache(credentials);
m_cacheForMultiUser = m_cache.CreateAuthenticatedView(GetPkcsCredentialsForMU(credentials), pool.Name);
return m_cacheForMultiUser.GetRegion<TKey, TValue>(path);
}
else
return m_cacheForMultiUser.GetRegion<TKey, TValue>(path);
}
return null;
}
public static IRegionService getMultiuserCache(Properties<string, string> credentials)
{
if (m_cacheForMultiUser == null)
{
Pool/*<TKey, TValue>*/ pool = m_cache.GetPoolManager().Find("__TESTPOOL1_");
Assert.IsNotNull(pool, "Pool is null in getMultiuserCache.");
Assert.IsTrue(!pool.Destroyed);
//m_cacheForMultiUser = pool.CreateSecureUserCache(credentials);
m_cacheForMultiUser = m_cache.CreateAuthenticatedView(GetPkcsCredentialsForMU(credentials), pool.Name);
return m_cacheForMultiUser;
}
else
return m_cacheForMultiUser;
}
public static IRegion<TKey, TValue> GetVerifyRegion<TKey, TValue>(string path)
{
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(path);
Assert.IsNotNull(region, "IRegion<object, object> [" + path + "] not found.");
Util.Log("Found region '{0}'", path);
return region;
}
public static IRegion<TKey, TValue> GetVerifyRegion<TKey, TValue>(string path, Properties<string, string> credentials)
{
Util.Log("GetVerifyRegion " + m_cacheForMultiUser);
if (m_cacheForMultiUser == null)
{
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(path);
Assert.IsNotNull(region, "IRegion<object, object> [" + path + "] not found.");
Assert.IsNotNull(region.Attributes.PoolName, "IRegion<object, object> is created without pool.");
Pool/*<TKey, TValue>*/ pool = m_cache.GetPoolManager().Find(region.Attributes.PoolName);
Assert.IsNotNull(pool, "Pool is null in GetVerifyRegion.");
//m_cacheForMultiUser = pool.CreateSecureUserCache(credentials);
m_cacheForMultiUser = m_cache.CreateAuthenticatedView(GetPkcsCredentialsForMU(credentials), pool.Name);
return m_cacheForMultiUser.GetRegion<TKey, TValue>(path);
}
else
return m_cacheForMultiUser.GetRegion<TKey, TValue>(path);
}
public static void VerifyRegion<TKey, TValue>(string path)
{
GetVerifyRegion<TKey, TValue>(path);
}
public static void VerifyNoRegion<TKey, TValue>(string path)
{
IRegion<TKey, TValue> region = GetRegion<TKey, TValue>(path);
Assert.IsNull(region, "IRegion<object, object> [" + path + "] should not exist.");
}
#endregion
#region Functions to start/stop a java cacheserver for Thin Client regions
public static void SetupJavaServers(params string[] cacheXmls)
{
SetupJavaServers(false, cacheXmls);
}
public static void setPorts(int s1, int s2, int s3, int l1, int l2)
{
HOST_PORT_1 = s1;
HOST_PORT_2 = s1;
HOST_PORT_3 = s3;
LOCATOR_PORT_1 = l1;
LOCATOR_PORT_2 = l2;
}
public static void SetupJavaServers(bool locators, params string[] cacheXmls)
{
createRandomPorts();
m_cacheXmls = cacheXmls;
m_gfeDir = Util.GetEnvironmentVariable("GFE_DIR");
Assert.IsNotNull(m_gfeDir, "GFE_DIR is not set.");
Assert.IsNotEmpty(m_gfeDir, "GFE_DIR is not set.");
m_gfeLogLevel = Util.GetEnvironmentVariable("GFE_LOGLEVEL");
m_gfeSecLogLevel = Util.GetEnvironmentVariable("GFE_SECLOGLEVEL");
if (m_gfeLogLevel == null || m_gfeLogLevel.Length == 0)
{
m_gfeLogLevel = "config";
}
if (m_gfeSecLogLevel == null || m_gfeSecLogLevel.Length == 0)
{
m_gfeSecLogLevel = "config";
}
Match mt = Regex.Match(m_gfeDir, "^[^:]+:[0-9]+(,[^:]+:[0-9]+)*$");
if (mt != null && mt.Length > 0)
{
// The GFE_DIR is for a remote server; contains an end-point list
m_endpoints = m_gfeDir;
m_localServer = false;
}
else if (cacheXmls != null)
{
// Assume the GFE_DIR is for a local server
if (locators)
{
JavaMcastPort = 0;
}
else
{
JavaMcastPort = Util.Rand(2431, 31123);
}
for (int i = 0; i < cacheXmls.Length; i++)
{
string cacheXml = cacheXmls[i];
Assert.IsNotNull(cacheXml, "cacheXml is not set for Java cacheserver.");
Assert.IsNotEmpty(cacheXml, "cacheXml is not set for Java cacheserver.");
string duplicateFile = "";
// Assume the GFE_DIR is for a local server
if (cacheXml.IndexOf(PathSep) < 0)
{
duplicateFile = Directory.GetCurrentDirectory() + PathSep + Util.Rand(2342350).ToString() + cacheXml;
cacheXml = Directory.GetCurrentDirectory() + PathSep + cacheXml;
createDuplicateXMLFile(cacheXml, duplicateFile);
//:create duplicate xml files
cacheXmls[i] = duplicateFile;
}
// Find the port number from the given cache.xml
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.XmlResolver = null;
xmlDoc.Load(duplicateFile);
XmlNamespaceManager ns = new XmlNamespaceManager(xmlDoc.NameTable);
ns.AddNamespace("geode", "http://geode.apache.org/schema/cache");
XmlNodeList serverNodeList = xmlDoc.SelectNodes("//geode:cache-server", ns);
if (m_endpoints == null)
{
m_endpoints = System.Net.Dns.GetHostEntry("localhost").HostName + ":" + serverNodeList[0].Attributes["port"].Value;
}
else
{
m_endpoints += "," + System.Net.Dns.GetHostEntry("localhost").HostName + ":" + serverNodeList[0].Attributes["port"].Value;
}
}
Util.Log("JAVA server endpoints: " + m_endpoints);
}
}
public static void createRandomPorts()
{
if (HOST_PORT_1 == 0)
{
HOST_PORT_1 = Util.RandPort(10000, 64000);
HOST_PORT_2 = Util.RandPort(10000, 64000);
HOST_PORT_3 = Util.RandPort(10000, 64000);
HOST_PORT_4 = Util.RandPort(10000, 64000);
}
if (LOCATOR_PORT_1 == 0)
{
LOCATOR_PORT_1 = Util.RandPort(10000, 64000);
LOCATOR_PORT_2 = Util.RandPort(10000, 64000);
LOCATOR_PORT_3 = Util.RandPort(10000, 64000);
LOCATOR_PORT_4 = Util.RandPort(10000, 64000);
}
}
public static void createDuplicateXMLFile(string orignalFilename, string duplicateFilename)
{
string cachexmlstring = File.ReadAllText(orignalFilename);
cachexmlstring = cachexmlstring.Replace("HOST_PORT1", HOST_PORT_1.ToString());
cachexmlstring = cachexmlstring.Replace("HOST_PORT2", HOST_PORT_2.ToString());
cachexmlstring = cachexmlstring.Replace("HOST_PORT3", HOST_PORT_3.ToString());
cachexmlstring = cachexmlstring.Replace("HOST_PORT4", HOST_PORT_4.ToString());
cachexmlstring = cachexmlstring.Replace("LOC_PORT1", LOCATOR_PORT_1.ToString());
cachexmlstring = cachexmlstring.Replace("LOC_PORT2", LOCATOR_PORT_2.ToString());
cachexmlstring = cachexmlstring.Replace("LOC_PORT3", LOCATOR_PORT_3.ToString());
//cachexmlstring = cachexmlstring.Replace("LOC_PORT4", LOCATOR_PORT_4.ToString());
File.Create(duplicateFilename).Close();
File.WriteAllText(duplicateFilename, cachexmlstring);
}
public static void StartJavaLocator(int locatorNum, string startDir)
{
StartJavaLocator(locatorNum, startDir, null);
}
public static int getBaseLocatorPort()
{
return LocatorPort;
}
public static void StartJavaLocator(int locatorNum, string startDir,
string extraLocatorArgs)
{
StartJavaLocator(locatorNum, startDir, extraLocatorArgs, false);
}
public static void StartJavaLocator(int locatorNum, string startDir,
string extraLocatorArgs, bool ssl)
{
if (m_localServer)
{
Process javaProc;
string locatorPath = m_gfeDir + PathSep + "bin" + PathSep + GeodeName;
Util.Log("Starting locator {0} in directory {1}.", locatorNum, startDir);
string serverName = "Locator" + Util.Rand(64687687).ToString();
if (startDir != null)
{
startDir += serverName;
if (!Directory.Exists(startDir))
{
Directory.CreateDirectory(startDir);
}
try
{
TextWriter tw = new StreamWriter(Directory.GetCurrentDirectory() + "\\" + startDir + "\\geode.properties", false);
tw.WriteLine("locators=localhost[{0}],localhost[{1}],localhost[{2}]", LOCATOR_PORT_1, LOCATOR_PORT_2, LOCATOR_PORT_3);
if (ssl)
{
tw.WriteLine("ssl-enabled=true");
tw.WriteLine("ssl-require-authentication=true");
tw.WriteLine("ssl-ciphers=SSL_RSA_WITH_NULL_MD5");
tw.WriteLine("mcast-port=0");
}
tw.Close();
}
catch (Exception ex)
{
Assert.Fail("Locator property file creation failed: {0}: {1}", ex.GetType().Name, ex.Message);
}
startDir = " --dir=" + startDir;
}
else
{
startDir = string.Empty;
}
string locatorPort = " --port=" + getLocatorPort(locatorNum);
if (extraLocatorArgs != null)
{
extraLocatorArgs = ' ' + extraLocatorArgs + locatorPort;
}
else
{
extraLocatorArgs = locatorPort;
}
if (ssl)
{
string sslArgs = String.Empty;
string keystore = Util.GetEnvironmentVariable("CPP_TESTOUT") + "/keystore";
sslArgs += " --J=-Djavax.net.ssl.keyStore=" + keystore + "/server_keystore.jks ";
sslArgs += " --J=-Djavax.net.ssl.keyStorePassword=gemstone ";
sslArgs += " --J=-Djavax.net.ssl.trustStore=" + keystore + "/server_truststore.jks ";
sslArgs += " --J=-Djavax.net.ssl.trustStorePassword=gemstone ";
extraLocatorArgs += sslArgs;
}
string locatorArgs = LocatorStartArgs + " --name=" + serverName + startDir + extraLocatorArgs + " --http-service-port=0";
if (!Util.StartProcess(locatorPath, locatorArgs, false, null, true,
false, false, true, out javaProc))
{
Assert.Fail("Failed to run the locator: {0}.",
locatorPath);
}
StreamReader outSr = javaProc.StandardOutput;
// Wait for cache server to start
bool started = javaProc.WaitForExit(MaxWaitMillis);
Util.Log("Output from '{0} {1}':{2}{3}", GeodeName, locatorArgs,
Environment.NewLine, outSr.ReadToEnd());
outSr.Close();
if (!started)
{
javaProc.Kill();
}
Assert.IsTrue(started, "Timed out waiting for " +
"Locator to start.{0}Please check the locator logs.",
Environment.NewLine);
m_runningLocators[locatorNum] = startDir;
if (m_locators == null)
{
m_locators = "localhost:" + getLocatorPort(locatorNum);
}
else
{
m_locators += ",localhost:" + getLocatorPort(locatorNum);
}
Util.Log("JAVA locator endpoints: " + m_locators);
}
}
static int getLocatorPort(int num)
{
switch (num)
{
case 1:
return LOCATOR_PORT_1;
case 2:
return LOCATOR_PORT_2;
case 3:
return LOCATOR_PORT_3;
default:
return LOCATOR_PORT_1;
}
}
//this is for start locator independetly(will not see each other)
public static void StartJavaLocator_MDS(int locatorNum, string startDir,
string extraLocatorArgs, int dsId)
{
if (m_localServer)
{
Process javaProc;
string locatorPath = m_gfeDir + PathSep + "bin" + PathSep + GeodeName;
string serverName = "Locator" + Util.Rand(64687687).ToString();
Util.Log("Starting locator {0} in directory {1}.", locatorNum, startDir);
if (startDir != null)
{
startDir += serverName;
if (!Directory.Exists(startDir))
{
Directory.CreateDirectory(startDir);
}
try
{
TextWriter tw = new StreamWriter(Directory.GetCurrentDirectory() + "\\" + startDir + "\\geode.properties", false);
//tw.WriteLine("locators=localhost[{0}],localhost[{1}],localhost[{2}]", LOCATOR_PORT_1, LOCATOR_PORT_2, LOCATOR_PORT_3);
tw.WriteLine("distributed-system-id=" + dsId);
tw.WriteLine("mcast-port=0");
tw.Close();
}
catch (Exception ex)
{
Assert.Fail("Locator property file creation failed: {0}: {1}", ex.GetType().Name, ex.Message);
}
startDir = " --dir=" + startDir;
}
else
{
startDir = string.Empty;
}
if (dsId == 1)
m_locatorFirst = "localhost:" + getLocatorPort(locatorNum);
else
m_locatorSecond = "localhost:" + getLocatorPort(locatorNum);
string locatorPort = " --port=" + getLocatorPort(locatorNum);
if (extraLocatorArgs != null)
{
extraLocatorArgs = ' ' + extraLocatorArgs + locatorPort;
}
else
{
extraLocatorArgs = locatorPort;
}
string locatorArgs = LocatorStartArgs + " --name=" + serverName + startDir + extraLocatorArgs + " --http-service-port=0";
if (!Util.StartProcess(locatorPath, locatorArgs, false, null, true,
false, false, true, out javaProc))
{
Assert.Fail("Failed to run the locator: {0}.",
locatorPath);
}
StreamReader outSr = javaProc.StandardOutput;
// Wait for cache server to start
bool started = javaProc.WaitForExit(MaxWaitMillis);
Util.Log("Output from '{0} {1}':{2}{3}", GeodeName, locatorArgs,
Environment.NewLine, outSr.ReadToEnd());
outSr.Close();
if (!started)
{
javaProc.Kill();
}
Assert.IsTrue(started, "Timed out waiting for " +
"Locator to start.{0}Please check the locator logs.",
Environment.NewLine);
m_runningLocators[locatorNum] = startDir;
if (m_locators == null)
{
m_locators = "localhost[" + getLocatorPort(locatorNum) + "]";
}
else
{
m_locators += ",localhost[" + getLocatorPort(locatorNum) + "]";
}
Util.Log("JAVA locator endpoints: " + m_locators);
}
}
public static void StartJavaServerWithLocators(int serverNum, string startDir, int numLocators)
{
StartJavaServerWithLocators(serverNum, startDir, numLocators, false);
}
public static void StartJavaServerWithLocators(int serverNum, string startDir, int numLocators, bool ssl)
{
string extraServerArgs = "--locators=";
for (int locator = 0; locator < numLocators; locator++)
{
if (locator > 0)
{
extraServerArgs += ",";
}
extraServerArgs += "localhost[" + getLocatorPort(locator + 1) + "]";
}
if (ssl)
{
string sslArgs = String.Empty;
sslArgs += " ssl-enabled=true ssl-require-authentication=true ssl-ciphers=SSL_RSA_WITH_NULL_MD5 ";
string keystore = Util.GetEnvironmentVariable("CPP_TESTOUT") + "/keystore";
sslArgs += " -J=-Djavax.net.ssl.keyStore=" + keystore + "/server_keystore.jks ";
sslArgs += " -J=-Djavax.net.ssl.keyStorePassword=gemstone ";
sslArgs += " -J=-Djavax.net.ssl.trustStore=" + keystore + "/server_truststore.jks ";
sslArgs += " -J=-Djavax.net.ssl.trustStorePassword=gemstone ";
extraServerArgs += sslArgs;
}
StartJavaServer(serverNum, startDir, extraServerArgs);
}
//this is to start multiple DS
public static void StartJavaServerWithLocator_MDS(int serverNum, string startDir, int locatorNumber)
{
string extraServerArgs = "--locators=";
extraServerArgs += "localhost[" + getLocatorPort(locatorNumber) + "]";
StartJavaServer(serverNum, startDir, extraServerArgs);
}
public static void StartJavaServer(int serverNum, string startDir)
{
StartJavaServer(serverNum, startDir, null);
}
public static void StartJavaServerWithLocators(int serverNum, string startDir,
int numLocators, string extraServerArgs)
{
StartJavaServerWithLocators(serverNum, startDir, numLocators, extraServerArgs, false);
}
public static void StartJavaServerWithLocators(int serverNum, string startDir,
int numLocators, string extraServerArgs, bool ssl)
{
extraServerArgs += " --locators=";
for (int locator = 0; locator < numLocators; locator++)
{
if (locator > 0)
{
extraServerArgs += ",";
}
extraServerArgs += "localhost[" + getLocatorPort(locator + 1) + "]";
}
if (ssl)
{
string sslArgs = String.Empty;
sslArgs += " ssl-enabled=true ssl-require-authentication=true ssl-ciphers=SSL_RSA_WITH_NULL_MD5 ";
string keystore = Util.GetEnvironmentVariable("CPP_TESTOUT") + "/keystore";
sslArgs += " --J=-Djavax.net.ssl.keyStore=" + keystore + "/server_keystore.jks ";
sslArgs += " --J=-Djavax.net.ssl.keyStorePassword=gemstone ";
sslArgs += " --J=-Djavax.net.ssl.trustStore=" + keystore + "/server_truststore.jks ";
sslArgs += " --J=-Djavax.net.ssl.trustStorePassword=gemstone ";
extraServerArgs += sslArgs;
}
StartJavaServer(serverNum, startDir, extraServerArgs);
}
public static void StartJavaServer(int serverNum, string startDir,
string extraServerArgs)
{
if (m_localServer)
{
if (m_cacheXmls == null || serverNum > m_cacheXmls.Length)
{
Assert.Fail("SetupJavaServers called with incorrect parameters: " +
"could not find cache.xml for server number {0}", serverNum);
}
string cacheXml = m_cacheXmls[serverNum - 1];
Process javaProc;
string javaServerPath = m_gfeDir + PathSep + "bin" + PathSep + JavaServerName;
string serverName = "Server" + Util.Rand(372468723).ToString();
startDir += serverName;
int port = 0;
switch (serverNum)
{
case 1:
port = HOST_PORT_1;
break;
case 2:
port = HOST_PORT_2;
break;
case 3:
port = HOST_PORT_3;
break;
case 4:
port = HOST_PORT_4;
break;
default:
throw new InvalidOperationException();
}
Util.Log("Starting server {0} in directory {1}.", serverNum, startDir);
if (startDir != null)
{
if (!Directory.Exists(startDir))
{
Directory.CreateDirectory(startDir);
}
startDir = " --dir=" + startDir;
}
else
{
startDir = string.Empty;
}
if (extraServerArgs != null)
{
extraServerArgs = ' ' + extraServerArgs;
}
string classpath = Util.GetEnvironmentVariable("GF_CLASSPATH");
string serverArgs = JavaServerStartArgs + cacheXml + " --name=" + serverName +
" --server-port=" + port + " --classpath=" + classpath +
" --log-level=" + m_gfeLogLevel + startDir +
" --J=-Dsecurity-log-level=" + m_gfeSecLogLevel + extraServerArgs;
if (!Util.StartProcess(javaServerPath, serverArgs, false, null, true,
false, false, true, out javaProc))
{
Assert.Fail("Failed to run the java cacheserver executable: {0}.",
javaServerPath);
}
StreamReader outSr = javaProc.StandardOutput;
// Wait for cache server to start
bool started = javaProc.WaitForExit(MaxWaitMillis);
Util.Log("Output from '{0} {1}':{2}{3}", JavaServerName, serverArgs,
Environment.NewLine, outSr.ReadToEnd());
outSr.Close();
if (!started)
{
try
{
javaProc.Kill();
}
catch
{
//ignore
}
}
Assert.IsTrue(started, "Timed out waiting for " +
"Java cacheserver to start.{0}Please check the server logs.",
Environment.NewLine);
m_runningJavaServers[serverNum] = startDir;
}
}
public static void StopJavaLocator(int locatorNum)
{
StopJavaLocator(locatorNum, true, false);
}
public static void StopJavaLocator(int locatorNum, bool verifyLocator)
{
StopJavaLocator(locatorNum, verifyLocator, false);
}
public static void StopJavaLocator(int locatorNum, bool verifyLocator, bool ssl)
{
if (m_localServer)
{
// Assume the GFE_DIR is for a local server
string startDir;
if (m_runningLocators.TryGetValue(locatorNum, out startDir))
{
Util.Log("Stopping locator {0} in directory {1}.", locatorNum, startDir);
Process javaStopProc;
string javaLocatorPath = m_gfeDir + PathSep + "bin" + PathSep + GeodeName;
string sslArgs = String.Empty;
if (ssl)
{
string keystore = Util.GetEnvironmentVariable("CPP_TESTOUT") + "/keystore";
sslArgs += " --J=-Djavax.net.ssl.keyStore=" + keystore + "/server_keystore.jks ";
sslArgs += " --J=-Djavax.net.ssl.keyStorePassword=gemstone ";
sslArgs += " --J=-Djavax.net.ssl.trustStore=" + keystore + "/server_truststore.jks ";
sslArgs += " --J=-Djavax.net.ssl.trustStorePassword=gemstone ";
string propdir = startDir.Replace("--dir=", string.Empty).Trim();
File.Copy(propdir + "/geode.properties", Directory.GetCurrentDirectory() + "/geode.properties", true);
}
if (!Util.StartProcess(javaLocatorPath, LocatorStopArgs + startDir + sslArgs,
false, null, true, false, false, true, out javaStopProc))
{
Assert.Fail("Failed to run the executable: {0}.",
javaLocatorPath);
}
StreamReader outSr = javaStopProc.StandardOutput;
// Wait for cache server to stop
bool stopped = javaStopProc.WaitForExit(MaxWaitMillis);
Util.Log("Output from '{0} stop-locator':{1}{2}", GeodeName,
Environment.NewLine, outSr.ReadToEnd());
outSr.Close();
if (!stopped)
{
try
{
javaStopProc.Kill();
}
catch
{
//ignore
}
}
if (ssl)
{
File.Delete(Directory.GetCurrentDirectory() + "/geode.properties");
}
Assert.IsTrue(stopped, "Timed out waiting for " +
"Java locator to stop.{0}Please check the locator logs.",
Environment.NewLine);
m_runningLocators.Remove(locatorNum);
Util.Log("Locator {0} in directory {1} stopped.", locatorNum,
startDir.Replace("--dir=", string.Empty).Trim());
}
else
{
if (verifyLocator)
{
Assert.Fail("StopJavaLocator() invoked for a non-existing locator {0}",
locatorNum);
}
}
}
}
public static void StopJavaServer(int serverNum)
{
StopJavaServer(serverNum, true);
}
public static void StopJavaServer(int serverNum, bool verifyServer)
{
if (m_localServer)
{
// Assume the GFE_DIR is for a local server
string startDir;
if (m_runningJavaServers.TryGetValue(serverNum, out startDir))
{
Util.Log("Stopping server {0} in directory {1}.", serverNum, startDir);
Process javaStopProc;
string javaServerPath = m_gfeDir + PathSep + "bin" + PathSep + JavaServerName;
if (!Util.StartProcess(javaServerPath, JavaServerStopArgs + startDir,
false, null, true, false, false, true, out javaStopProc))
{
Assert.Fail("Failed to run the java cacheserver executable: {0}.",
javaServerPath);
}
StreamReader outSr = javaStopProc.StandardOutput;
// Wait for cache server to stop
bool stopped = javaStopProc.WaitForExit(MaxWaitMillis);
Util.Log("Output from '{0} stop':{1}{2}", JavaServerName,
Environment.NewLine, outSr.ReadToEnd());
outSr.Close();
if (!stopped)
{
try
{
javaStopProc.Kill();
}
catch
{
//ignore
}
}
Assert.IsTrue(stopped, "Timed out waiting for " +
"Java cacheserver to stop.{0}Please check the server logs.",
Environment.NewLine);
m_runningJavaServers.Remove(serverNum);
Util.Log("Server {0} in directory {1} stopped.", serverNum,
startDir.Replace("--dir=", string.Empty).Trim());
}
else
{
if (verifyServer)
{
Assert.Fail("StopJavaServer() invoked for a non-existing server {0}",
serverNum);
}
}
}
}
public static void StopJavaServers()
{
int[] runningServers = new int[m_runningJavaServers.Count];
m_runningJavaServers.Keys.CopyTo(runningServers, 0);
foreach (int serverNum in runningServers)
{
StopJavaServer(serverNum);
Util.Log("Cacheserver {0} stopped.", serverNum);
}
m_runningJavaServers.Clear();
}
public static void StopJavaLocators()
{
int[] runningServers = new int[m_runningLocators.Count];
m_runningLocators.Keys.CopyTo(runningServers, 0);
foreach (int serverNum in runningServers)
{
StopJavaLocator(serverNum);
Util.Log("Locator {0} stopped.", serverNum);
}
m_runningLocators.Clear();
}
public static void ClearEndpoints()
{
m_endpoints = null;
}
public static void ClearLocators()
{
m_locators = null;
}
public static void KillJavaProcesses()
{
String myQuery = "select * from win32_process where Name ='java.exe' or Name = 'java.exe *32'";
ObjectQuery objQuery = new ObjectQuery(myQuery);
ManagementObjectSearcher objSearcher = new ManagementObjectSearcher(objQuery);
ManagementObjectCollection processList = objSearcher.Get();
foreach (ManagementObject item in processList)
{
try
{
int processId = Convert.ToInt32(item["ProcessId"].ToString());
string commandline = item["CommandLine"].ToString();
Util.Log("processId:{0} name:{1}", item["ProcessId"], item["Name"]);
if (commandline.Contains("gemfire.jar"))
{
Util.Log("Killing geode process with id {0}", processId);
Process proc = Process.GetProcessById(processId);
try
{
proc.Kill();
}
catch
{
//ignore
}
proc.WaitForExit(MaxWaitMillis);
}
else
{
Util.Log("Process with id {0} is not geode process", processId);
}
}
catch (Exception e)
{
Console.WriteLine("Error: " + e);
}
}
}
public static void EndTest()
{
Util.Log("Cache Helper EndTest.");
StopJavaServers();
StopJavaLocators();
ClearEndpoints();
ClearLocators();
KillJavaProcesses();
Util.Log("Cache Helper EndTest completed.");
}
#endregion
#region Utility functions
public static void ShowKeys(ICollection<Object> cKeys)
{
if (cKeys != null)
{
for (int i = 0; i < cKeys.Count; i++)
{
//TODO ATTACH List TO THE COLLECTION AND UNCOMMENT BELOW LINE
//Util.Log("Key [{0}] = {1}", i, cKeys[i]);
}
}
}
public static void ShowValues(ICollection<Object> cValues)
{
if (cValues != null)
{
for (int i = 0; i < cValues.Count; i++)
{
//TODO ATTACH List TO THE COLLECTION AND UNCOMMENT BELOW LINE
//Util.Log("Value [{0}] = {1}", i, cValues[i]);
}
}
}
public static string RegionAttributesToString<TKey, TVal>(Apache.Geode.Client.RegionAttributes<TKey, TVal> attrs)
{
string poolName = "RegionWithoutPool";
if (attrs.PoolName != null)
poolName = attrs.PoolName;
StringBuilder attrsSB = new StringBuilder();
attrsSB.Append(Environment.NewLine + "caching: " +
attrs.CachingEnabled);
attrsSB.Append(Environment.NewLine + "endpoints: " +
attrs.Endpoints);
attrsSB.Append(Environment.NewLine + "clientNotification: " +
attrs.ClientNotificationEnabled);
attrsSB.Append(Environment.NewLine + "initialCapacity: " +
attrs.InitialCapacity);
attrsSB.Append(Environment.NewLine + "loadFactor: " +
attrs.LoadFactor);
attrsSB.Append(Environment.NewLine + "concurrencyLevel: " +
attrs.ConcurrencyLevel);
attrsSB.Append(Environment.NewLine + "lruEntriesLimit: " +
attrs.LruEntriesLimit);
attrsSB.Append(Environment.NewLine + "lruEvictionAction: " +
attrs.LruEvictionAction);
attrsSB.Append(Environment.NewLine + "entryTimeToLive: " +
attrs.EntryTimeToLive);
attrsSB.Append(Environment.NewLine + "entryTimeToLiveAction: " +
attrs.EntryTimeToLiveAction);
attrsSB.Append(Environment.NewLine + "entryIdleTimeout: " +
attrs.EntryIdleTimeout);
attrsSB.Append(Environment.NewLine + "entryIdleTimeoutAction: " +
attrs.EntryIdleTimeoutAction);
attrsSB.Append(Environment.NewLine + "regionTimeToLive: " +
attrs.RegionTimeToLive);
attrsSB.Append(Environment.NewLine + "regionTimeToLiveAction: " +
attrs.RegionTimeToLiveAction);
attrsSB.Append(Environment.NewLine + "regionIdleTimeout: " +
attrs.RegionIdleTimeout);
attrsSB.Append(Environment.NewLine + "regionIdleTimeoutAction: " +
attrs.RegionIdleTimeoutAction);
attrsSB.Append(Environment.NewLine + "PoolName: " +
poolName);
attrsSB.Append(Environment.NewLine);
return attrsSB.ToString();
}
#endregion
}
}