Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
b9309e80
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b9309e80
编写于
6月 30, 2015
作者:
A
aefimov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8076139: [TEST_BUG] test/javax/xml/ws/8046817/GenerateEnumSchema.java creates files in test.src
Reviewed-by: igerasim
上级
42e7b579
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
119 addition
and
1 deletion
+119
-1
test/javax/xml/bind/jxc/8046817/GenerateEnumSchema.java
test/javax/xml/bind/jxc/8046817/GenerateEnumSchema.java
+118
-0
test/javax/xml/bind/jxc/8046817/TestClassType.java
test/javax/xml/bind/jxc/8046817/TestClassType.java
+1
-1
test/javax/xml/bind/jxc/8046817/TestEnumType.java
test/javax/xml/bind/jxc/8046817/TestEnumType.java
+0
-0
未找到文件。
test/javax/xml/
ws
/8046817/GenerateEnumSchema.java
→
test/javax/xml/
bind/jxc
/8046817/GenerateEnumSchema.java
浏览文件 @
b9309e80
...
...
@@ -23,131 +23,82 @@
/*
* @test
* @bug 8046817 8073357
* @bug 8046817 8073357
8076139
* @summary schemagen fails to generate xsd for enum types.
* Check that order of Enum values is preserved.
* @run main/othervm GenerateEnumSchema
* @library /lib/testlibrary
* @run testng/othervm GenerateEnumSchema
*/
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
static
java
.
nio
.
file
.
StandardCopyOption
.
REPLACE_EXISTING
;
import
java.util.Arrays
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
import
jdk.testlibrary.JDKToolLauncher
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeTest
;
import
org.testng.annotations.DataProvider
;
import
org.testng.annotations.Test
;
public
class
GenerateEnumSchema
{
private
static
final
String
SCHEMA_OUTPUT_FILENAME
=
"schema1.xsd"
;
private
static
final
File
schemaOutputFile
=
new
File
(
SCHEMA_OUTPUT_FILENAME
);
private
static
final
String
[]
expectedEnums
=
{
"\"FIRST\""
,
"\"ONE\""
,
"\"TWO\""
,
"\"THREE\""
,
"\"FOUR\""
,
"\"FIVE\""
,
"\"SIX\""
,
"\"LAST\""
};
private
static
String
schemaContent
=
""
;
public
static
void
main
(
String
[]
args
)
throws
Exception
{
//Check schema generation for class type
runSchemaGen
(
"TestClassType.java"
);
checkIfSchemaGenerated
();
readSchemaContent
();
checkSchemaContent
(
"<xs:complexType name=\"testClassType\">"
);
checkSchemaContent
(
"<xs:element name=\"a\" type=\"xs:int\"/>"
);
//Check schema generation for enum type
runSchemaGen
(
"TestEnumType.java"
);
checkIfSchemaGenerated
();
readSchemaContent
();
//Check if Enum type schema is generated
checkSchemaContent
(
"<xs:simpleType name=\"testEnumType\">"
);
//Check the sequence of enum values order
checkEnumOrder
();
schemaOutputFile
.
delete
();
@DataProvider
//test case name, input file for schemagen, regexp for checking schema content
public
static
Object
[][]
schemagenGenerationData
()
{
return
new
Object
[][]
{
{
"Class"
,
"TestClassType.java"
,
".+?name=\"testClassType\".+"
},
{
"Enum"
,
"TestEnumType.java"
,
".+?FIRST.+?ONE.+?TWO.+?THREE.+?FOUR.+?FIVE.+?SIX.+?LAST.+"
},
};
}
// Check if schema file successfully generated by schemagen
private
static
void
checkIfSchemaGenerated
()
{
if
(!
schemaOutputFile
.
exists
())
{
throw
new
RuntimeException
(
"FAIL:"
+
SCHEMA_OUTPUT_FILENAME
+
" was not generated by schemagen tool"
);
}
@BeforeTest
public
void
setUp
()
throws
IOException
{
//Create test directory inside scratch
testWorkDir
=
Paths
.
get
(
System
.
getProperty
(
"user.dir"
,
"."
))
.
resolve
(
"GenerateEnumSchema"
);
testSrcDir
=
Paths
.
get
(
System
.
getProperty
(
"test.src"
,
"."
));
//Create test work directory inside scratch directory
Files
.
createDirectory
(
testWorkDir
);
}
//Read schema content from file
private
static
void
readSchemaContent
()
throws
Exception
{
schemaContent
=
Files
.
lines
(
schemaOutputFile
.
toPath
()).
collect
(
Collectors
.
joining
(
""
));
}
// Check if schema file contains specific string
private
static
void
checkSchemaContent
(
String
expContent
)
{
System
.
out
.
print
(
"Check if generated schema contains '"
+
expContent
+
"' string: "
);
if
(
schemaContent
.
contains
(
expContent
))
{
System
.
out
.
println
(
"OK"
);
return
;
}
System
.
out
.
println
(
"FAIL"
);
throw
new
RuntimeException
(
"The '"
+
expContent
+
"' is not found in generated schema"
);
@Test
(
dataProvider
=
"schemagenGenerationData"
)
public
void
schemangenGenerationTestCase
(
String
shortTestName
,
String
inputFileName
,
String
regexp
)
throws
IOException
{
//Create test case directory
Path
testCaseDir
=
testWorkDir
.
resolve
(
shortTestName
);
Files
.
createDirectories
(
testCaseDir
);
//Copy java source from test.src to the test case dir
Files
.
copy
(
testSrcDir
.
resolve
(
inputFileName
),
testCaseDir
.
resolve
(
inputFileName
),
REPLACE_EXISTING
);
//Run schemagen
runSchemaGen
(
inputFileName
,
testCaseDir
);
//Check if schema file generated
Assert
.
assertTrue
(
Files
.
exists
(
testCaseDir
.
resolve
(
SCHEMA_FILE
)));
//Read schema content from file
String
content
=
Files
.
lines
(
testCaseDir
.
resolve
(
SCHEMA_FILE
)).
collect
(
Collectors
.
joining
(
""
));
System
.
out
.
println
(
"Generated schema: "
+
content
);
//Check if schema contains expected content
Assert
.
assertTrue
(
Pattern
.
matches
(
regexp
,
content
));
}
// Check if the generated schema contains all enum constants
// and their order is preserved
private
static
void
checkEnumOrder
()
throws
Exception
{
int
prevElem
=
-
1
;
for
(
String
elem
:
expectedEnums
)
{
int
curElem
=
schemaContent
.
indexOf
(
elem
);
System
.
out
.
println
(
elem
+
" position = "
+
curElem
);
if
(
curElem
<
prevElem
)
{
throw
new
RuntimeException
(
"FAIL: Enum values order is incorrect or "
+
elem
+
" element is not found"
);
}
prevElem
=
curElem
;
}
}
private
static
String
getClassFilePath
(
String
filename
)
{
String
testSrc
=
System
.
getProperty
(
"test.src"
);
if
(
testSrc
==
null
)
{
testSrc
=
"."
;
}
return
Paths
.
get
(
testSrc
).
resolve
(
filename
).
toString
();
}
private
static
String
getSchemagen
()
{
String
javaHome
=
System
.
getProperty
(
"java.home"
);
if
(
javaHome
.
endsWith
(
"jre"
))
{
javaHome
=
new
File
(
javaHome
).
getParent
();
}
String
schemagen
=
javaHome
+
File
.
separator
+
"bin"
+
File
.
separator
+
"schemagen"
;
if
(
System
.
getProperty
(
"os.name"
).
startsWith
(
"Windows"
))
{
schemagen
=
schemagen
.
concat
(
".exe"
);
}
return
schemagen
;
}
private
static
void
logOutput
(
Process
p
)
throws
IOException
{
BufferedReader
r
=
new
BufferedReader
(
new
InputStreamReader
(
p
.
getInputStream
()));
String
s
=
r
.
readLine
();
while
(
s
!=
null
)
{
System
.
out
.
println
(
s
.
trim
());
s
=
r
.
readLine
();
}
}
private
static
void
runSchemaGen
(
String
classFile
)
{
String
schemagen
=
getSchemagen
();
private
static
void
runSchemaGen
(
String
classFile
,
Path
runDir
)
{
try
{
System
.
out
.
println
(
"Call to schemagen: "
+
schemagen
+
" "
+
classFile
);
String
[]
schemagen_args
=
{
schemagen
,
getClassFilePath
(
classFile
)
};
ProcessBuilder
pb
=
new
ProcessBuilder
(
schemagen_args
);
JDKToolLauncher
sgl
=
JDKToolLauncher
.
createUsingTestJDK
(
"schemagen"
);
sgl
.
addToolArg
(
classFile
);
System
.
out
.
println
(
"Executing: "
+
Arrays
.
asList
(
sgl
.
getCommand
()));
ProcessBuilder
pb
=
new
ProcessBuilder
(
sgl
.
getCommand
());
pb
.
directory
(
runDir
.
toFile
());
pb
.
redirectErrorStream
(
true
);
pb
.
inheritIO
();
Process
p
=
pb
.
start
();
logOutput
(
p
);
int
result
=
p
.
waitFor
();
p
.
destroy
();
if
(
result
!=
0
)
{
throw
new
RuntimeException
(
"schemagen failed"
);
}
...
...
@@ -157,4 +108,11 @@ public class GenerateEnumSchema {
throw
new
RuntimeException
(
"Error launching schemagen tool"
);
}
}
//schemagen tool output file name
private
static
final
String
SCHEMA_FILE
=
"schema1.xsd"
;
//Test working directory
Path
testWorkDir
;
//Directory with test src
Path
testSrcDir
;
}
test/javax/xml/
ws
/8046817/TestClassType.java
→
test/javax/xml/
bind/jxc
/8046817/TestClassType.java
浏览文件 @
b9309e80
/*
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014,
2015,
Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
test/javax/xml/
ws
/8046817/TestEnumType.java
→
test/javax/xml/
bind/jxc
/8046817/TestEnumType.java
浏览文件 @
b9309e80
文件已移动
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录