/// <summary> /// Starts a new process. /// </summary> /// <param name="file">Executable name.</param> /// <param name="arg1">Argument.</param> /// <param name="arg2">Argument.</param> /// <param name="workDir">Work directory.</param> /// <param name="waitForOutput">A string to look for in the output.</param> public static unsafe void StartProcess( string file, string arg1, string arg2, string workDir, string waitForOutput) { Debug.Assert(file != null); Debug.Assert(arg1 != null); Debug.Assert(arg2 != null); Debug.Assert(workDir != null); var env = Jvm.Get().AttachCurrentThread(); using (var cls = env.FindClass(ClassPlatformProcessUtils)) { var methodId = env.GetStaticMethodId(cls, "startProcess", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); using (var fileRef = env.NewStringUtf(file)) using (var arg1Ref = env.NewStringUtf(arg1)) using (var arg2Ref = env.NewStringUtf(arg2)) using (var workDirRef = env.NewStringUtf(workDir)) using (var waitForOutputRef = env.NewStringUtf(waitForOutput)) { var methodArgs = stackalloc long[5]; methodArgs[0] = fileRef.Target.ToInt64(); methodArgs[1] = arg1Ref.Target.ToInt64(); methodArgs[2] = arg2Ref.Target.ToInt64(); methodArgs[3] = workDirRef.Target.ToInt64(); methodArgs[4] = waitForOutputRef == null ? 0 : waitForOutputRef.Target.ToInt64(); env.CallStaticVoidMethod(cls, methodId, methodArgs); } } }
/// <summary> /// Ensures that JVM is created. /// When corresponding test runs individually we have to start/stop Ignite node to create the JVM, /// otherwise it already exists. /// </summary> private static void EnsureJvmCreated() { if (Jvm.Get(ignoreMissing: true) == null) { Ignition.Start(TestUtils.GetTestConfiguration()).Dispose(); } }
/// <summary> /// Creates the JVM if necessary. /// </summary> public static void EnsureJvmCreated() { if (Jvm.Get(true) == null) { var logger = new TestContextLogger(); JvmDll.Load(null, logger); IgniteManager.CreateJvm(GetTestConfiguration(), logger); } }
/** */ private static unsafe void CallVoidMethod(string className, string methodName, string methodSig) { var env = Jvm.Get().AttachCurrentThread(); using (var cls = env.FindClass(className)) { var methodId = env.GetStaticMethodId(cls, methodName, methodSig); env.CallStaticVoidMethod(cls, methodId); } }
/** */ private static unsafe string CallStringMethod(string className, string methodName, string methodSig) { var env = Jvm.Get().AttachCurrentThread(); using (var cls = env.FindClass(className)) { var methodId = env.GetStaticMethodId(cls, methodName, methodSig); var res = env.CallStaticObjectMethod(cls, methodId); return(env.JStringToString(res.Target)); } }
internal static void Reallocate(long memPtr, int cap) { var jvm = Jvm.Get(); var methodId = jvm.MethodId; long *args = stackalloc long[4]; args[0] = memPtr; args[1] = cap; jvm.AttachCurrentThread().CallStaticVoidMethod(methodId.PlatformUtils, methodId.PlatformUtilsReallocate, args); }
internal static bool IgnitionStop(string gridName, bool cancel) { var env = Jvm.Get().AttachCurrentThread(); var methodId = env.Jvm.MethodId; using (var gridName1 = env.NewStringUtf(gridName)) { long *args = stackalloc long[2]; args[0] = gridName == null ? 0 : gridName1.Target.ToInt64(); args[1] = cancel ? 1 : 0; return(env.CallStaticBoolMethod(methodId.PlatformIgnition, methodId.PlatformIgnitionStop, args)); } }
/** */ private static unsafe void CallStringMethod(string className, string methodName, string methodSig, string arg) { var env = Jvm.Get().AttachCurrentThread(); using (var cls = env.FindClass(className)) { var methodId = env.GetStaticMethodId(cls, methodName, methodSig); using (var gridNameRef = env.NewStringUtf(arg)) { var args = stackalloc long[1]; args[0] = gridNameRef.Target.ToInt64(); env.CallStaticVoidMethod(cls, methodId, args); } } }
/// <summary> /// Create JVM. /// </summary> /// <returns>JVM.</returns> private static Jvm CreateJvm(IgniteConfiguration cfg, ILogger log) { // Do not bother with classpath when JVM exists. var jvm = Jvm.Get(true); if (jvm != null) { return(jvm); } var cp = Classpath.CreateClasspath(cfg, log: log); var jvmOpts = GetMergedJvmOptions(cfg); jvmOpts.Add(cp); return(Jvm.GetOrCreate(jvmOpts)); }
/// <summary> /// Create JVM. /// </summary> /// <returns>JVM.</returns> internal static Jvm CreateJvm(IgniteConfiguration cfg, ILogger log) { // Do not bother with classpath when JVM exists. var jvm = Jvm.Get(true); if (jvm != null) { return(jvm); } var igniteHome = IgniteHome.Resolve(cfg.IgniteHome, log); var cp = Classpath.CreateClasspath(classPath: cfg.JvmClasspath, igniteHome: igniteHome, log: log); var jvmOpts = GetMergedJvmOptions(cfg, igniteHome); jvmOpts.Add(cp); return(Jvm.GetOrCreate(jvmOpts)); }