[
https://issues.apache.org/jira/browse/FLINK-2509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14693074#comment-14693074
]
ASF GitHub Bot commented on FLINK-2509:
---------------------------------------
Github user uce commented on a diff in the pull request:
https://github.com/apache/flink/pull/1008#discussion_r36834144
--- Diff:
flink-runtime/src/test/java/org/apache/flink/runtime/util/ClassLoaderUtilsTest.java
---
@@ -0,0 +1,131 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.runtime.util;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.jar.JarFile;
+
+/**
+ * Tests that validate the {@link ClassLoaderUtil}.
+ */
+public class ClassLoaderUtilsTest {
+
+ @Test
+ public void testWithURLClassLoader() {
+ File validJar = null;
+ File invalidJar = null;
+
+ try {
+ // file with jar contents
+ validJar = File.createTempFile("flink-url-test",
".tmp");
+ JarFileCreator jarFileCreator = new
JarFileCreator(validJar);
+ jarFileCreator.addClass(ClassLoaderUtilsTest.class);
+ jarFileCreator.createJarFile();
+
+ // validate that the JAR is correct and the test setup
is not broken
+ try {
+ new JarFile(validJar.getAbsolutePath());
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ fail("test setup broken: cannot create a valid
jar file");
+ }
+
+ // file with some random contents
+ invalidJar = File.createTempFile("flink-url-test",
".tmp");
+ try (FileOutputStream invalidout = new
FileOutputStream(invalidJar)) {
+ invalidout.write(new byte[] { -1, 1, -2, 3, -3,
4, });
+ }
+
+ // non existing file
+ File nonExisting =
File.createTempFile("flink-url-test", ".tmp");
+ assertTrue("Cannot create and delete temp file",
nonExisting.delete());
+
+
+ // create a URL classloader with
+ // - a HTTP URL
+ // - a file URL for an existing jar file
+ // - a file URL for an existing file that is not a jar
file
+ // - a file URL for a non-existing file
+
+ URL[] urls = {
+ new URL("http", "localhost", 26712,
"/some/file/path"),
+ new URL("file", null,
validJar.getAbsolutePath()),
+ new URL("file", null,
invalidJar.getAbsolutePath()),
+ new URL("file", null,
nonExisting.getAbsolutePath()),
+ };
+
+ URLClassLoader loader = new URLClassLoader(urls,
getClass().getClassLoader());
+ String info =
ClassLoaderUtil.getUserCodeClassLoaderInfo(loader);
+
+ assertTrue(info.indexOf("/some/file/path") > 0);
+ assertTrue(info.indexOf(validJar.getAbsolutePath() + "'
(valid") > 0);
+ assertTrue(info.indexOf(invalidJar.getAbsolutePath() +
"' (invalid JAR") > 0);
+ assertTrue(info.indexOf(nonExisting.getAbsolutePath() +
"' (missing") > 0);
+
+ System.out.println(info);
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+ finally {
+ if (validJar != null) {
+ //noinspection ResultOfMethodCallIgnored
+ validJar.delete();
+ }
+ if (invalidJar != null) {
+ //noinspection ResultOfMethodCallIgnored
+ invalidJar.delete();
+ }
+ }
+ }
+
+ @Test
+ public void testWithAppClassLoader() {
+ try {
+ // must return something when invoked with 'null'
--- End diff --
copy paste comment misleading :smiley:
> Improve error messages when user code classes are not found
> -----------------------------------------------------------
>
> Key: FLINK-2509
> URL: https://issues.apache.org/jira/browse/FLINK-2509
> Project: Flink
> Issue Type: Bug
> Components: Core
> Affects Versions: 0.10
> Reporter: Stephan Ewen
> Assignee: Stephan Ewen
> Fix For: 0.10
>
>
> When a job fails because the user code classes are not found, we should add
> some information about the class loader and class path into the exception
> message.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)