Beispiel #1
0
 /// <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);
     }
 }
Beispiel #2
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="log">Logger.</param>
        /// <param name="jvm"></param>
        public UnmanagedCallbacks(ILogger log, Jvm jvm)
        {
            Debug.Assert(log != null);
            Debug.Assert(jvm != null);

            _log = log;
            _jvm = jvm;

            InitHandlers();
        }
Beispiel #3
0
        /// <summary>
        /// Create JVM.
        /// </summary>
        /// <returns>JVM.</returns>
        private static Jvm CreateJvm(IgniteConfiguration cfg)
        {
            var cp = Classpath.CreateClasspath(cfg);

            var jvmOpts = GetMergedJvmOptions(cfg);

            jvmOpts.Add(cp);

            return(Jvm.GetOrCreate(jvmOpts));
        }
Beispiel #4
0
        /** */
        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);
            }
        }
Beispiel #5
0
        /** */
        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));
            }
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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));
            }
        }
Beispiel #8
0
        /** */
        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);
                }
            }
        }
Beispiel #9
0
        static void Main(string[] args)
        {
            // Location of the Java Virtual Machine
            string jvmPath = AppDomain.CurrentDomain.BaseDirectory + "jre\\bin\\server\\jvm.dll";

            // Location of the hardware monitor editor JAR application
            string jarPath = AppDomain.CurrentDomain.BaseDirectory + "HardwareMonitorEditor.jar";

            // Create JVM
            Jvm jvm = new Jvm(jvmPath, Jvm.JNI_VERSION_9, jarPath);

            // Create the native interface that handles communication to and from the JAR application
            NativeInterface native = new NativeInterface(jvm);

            native.RunClient();
        }
Beispiel #10
0
        /// <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));
        }
Beispiel #11
0
        /// <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));
        }
Beispiel #12
0
        /// <summary>
        /// Starts a server node with a given version.
        /// </summary>
        /// <param name="groupId">Maven artifact group id.</param>
        /// <param name="version">Product version.</param>
        /// <returns>Disposable object to stop the server.</returns>
        public static IDisposable Start(string groupId, string version)
        {
            IgniteArgumentCheck.NotNullOrEmpty(version, "version");

            var pomWrapper =
                ReplaceIgniteVersionInPomFile(groupId, version, Path.Combine(JavaServerSourcePath, "pom.xml"));

            EnsureJvmCreated();

            var time = DateTime.Now;

            TestUtilsJni.StartProcess(
                file: Os.IsWindows ? "cmd.exe" : "/bin/bash",
                arg1: Os.IsWindows ? "/c" : "-c",
                arg2: string.Format("{0} {1}", MavenPath, MavenCommandExec),
                envVars: Jvm.IsJava9()
                    ? "MAVEN_OPTS#" + string.Join(" ", Jvm.Java9Options)
                    : string.Empty,
                workDir: JavaServerSourcePath,
                waitForOutput: "Ignite node started OK");

            // Java can not end process tree on Windows - detect the process manually and use taskkill.
            var serverProc = Os.IsWindows
                ? System.Diagnostics.Process
                             .GetProcesses()
                             .Single(p => p.ProcessName == "java" && p.StartTime > time)
                : null;

            return(new DisposeAction(() =>
            {
                if (serverProc != null)
                {
                    serverProc.KillProcessTree();
                }

                TestUtilsJni.DestroyProcess();
                pomWrapper.Dispose();
            }));
        }