1 /*******************************************************************************
2 * Copyright (c) 2015 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Marc-Andre Laperle - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.tracecompass
.tmf
.remote
.ui
.tests
.fetch
;
15 import static org
.junit
.Assert
.assertEquals
;
16 import static org
.junit
.Assert
.assertFalse
;
17 import static org
.junit
.Assert
.assertNotNull
;
18 import static org
.junit
.Assert
.assertTrue
;
20 import java
.io
.FileInputStream
;
21 import java
.util
.ArrayList
;
22 import java
.util
.List
;
24 import org
.eclipse
.core
.runtime
.IPath
;
25 import org
.eclipse
.core
.runtime
.Path
;
26 import org
.eclipse
.swt
.graphics
.Image
;
27 import org
.eclipse
.tracecompass
.internal
.tmf
.remote
.ui
.wizards
.fetch
.model
.RemoteImportConnectionNodeElement
;
28 import org
.eclipse
.tracecompass
.internal
.tmf
.remote
.ui
.wizards
.fetch
.model
.RemoteImportProfileElement
;
29 import org
.eclipse
.tracecompass
.internal
.tmf
.remote
.ui
.wizards
.fetch
.model
.RemoteImportProfilesReader
;
30 import org
.eclipse
.tracecompass
.internal
.tmf
.remote
.ui
.wizards
.fetch
.model
.RemoteImportTraceGroupElement
;
31 import org
.eclipse
.tracecompass
.internal
.tmf
.ui
.project
.wizards
.tracepkg
.TracePackageElement
;
32 import org
.eclipse
.tracecompass
.internal
.tmf
.ui
.project
.wizards
.tracepkg
.TracePackageFilesElement
;
33 import org
.eclipse
.tracecompass
.internal
.tmf
.ui
.project
.wizards
.tracepkg
.TracePackageTraceElement
;
34 import org
.junit
.Test
;
35 import org
.xml
.sax
.SAXException
;
38 * Test reading profiles from xml
40 public class RemoteImportProfilesReaderTest
extends AbstractRemoteImportProfilesIOTest
{
42 private static final Path INVALID_EMPTY_PROFILE_PATH
= new Path(
43 "resources/invalid_profile_empty_profile.xml"); //$NON-NLS-1$
44 private static final Path INVALID_MISSING_FILES_PROFILE_PATH
= new Path(
45 "resources/invalid_profile_missing_files.xml"); //$NON-NLS-1$
46 private static final Path INVALID_MISSING_ROOT_PROFILE_PATH
= new Path(
47 "resources/invalid_profile_missing_root.xml"); //$NON-NLS-1$
50 * Test a valid profiles file.
56 public void testValidateValid() throws Exception
{
57 validatePath(VALID_PROFILE_PATH
);
61 * Test a profiles file with an empty profile element.
66 @Test(expected
= SAXException
.class)
67 public void testValidateInvalidEmptyProfile() throws Exception
{
68 validatePath(INVALID_EMPTY_PROFILE_PATH
);
72 * Test a profiles file missing a files element under the trace element.
77 @Test(expected
= SAXException
.class)
78 public void testValidateInvalidMissingFiles() throws Exception
{
79 validatePath(INVALID_MISSING_FILES_PROFILE_PATH
);
83 * Test a profiles file missing a root directory.
88 @Test(expected
= SAXException
.class)
89 public void testValidateInvalidMissingRoot() throws Exception
{
90 validatePath(INVALID_MISSING_ROOT_PROFILE_PATH
);
94 * Test loading elements from a profiles file.
100 public void testLoadElements() throws Exception
{
101 TracePackageElement
[] elements
= loadElementsFromPath(VALID_PROFILE_PATH
);
102 assertEquals("profile element count", 2, elements
.length
); //$NON-NLS-1$
103 TracePackageElement element
= elements
[0];
104 assertTrue(element
instanceof RemoteImportProfileElement
);
106 RemoteImportProfileElement profileElement
= (RemoteImportProfileElement
) element
;
107 assertEquals("myProfile", profileElement
.getProfileName()); //$NON-NLS-1$
109 Image image
= profileElement
.getImage();
110 assertNotNull(image
);
113 assertEquals("profile children count", 2, profileElement
.getChildren().length
); //$NON-NLS-1$
116 element
= getElementOfClass(RemoteImportConnectionNodeElement
.class, profileElement
.getChildren()).get(0);
117 assertTrue(element
instanceof RemoteImportConnectionNodeElement
);
118 RemoteImportConnectionNodeElement nodeElement
= (RemoteImportConnectionNodeElement
) element
;
119 assertEquals("myhost", nodeElement
.getName()); //$NON-NLS-1$
120 assertEquals("ssh://user@127.0.0.1:22", nodeElement
.getURI()); //$NON-NLS-1$
121 image
= nodeElement
.getImage();
122 assertNotNull(image
);
124 element
= getElementOfClass(RemoteImportTraceGroupElement
.class, nodeElement
.getChildren()).get(0);
125 assertTrue(element
instanceof RemoteImportTraceGroupElement
);
126 RemoteImportTraceGroupElement traceGroupElement
= (RemoteImportTraceGroupElement
) element
;
127 assertEquals("/home/user/traces/test/test_with_lttng", traceGroupElement
.getRootImportPath()); //$NON-NLS-1$
128 assertTrue(traceGroupElement
.isRecursive());
129 image
= traceGroupElement
.getImage();
130 assertNotNull(image
);
132 element
= getElementOfClass(TracePackageTraceElement
.class, traceGroupElement
.getChildren()).get(0);
133 assertTrue(element
instanceof TracePackageTraceElement
);
134 TracePackageTraceElement traceElement
= (TracePackageTraceElement
) element
;
135 assertEquals("test.log.(group1)", traceElement
.getText()); //$NON-NLS-1$
136 assertEquals("org.eclipse.tracecompass.tmf.remote.ui.test.tracetype1", traceElement
.getTraceType()); //$NON-NLS-1$
138 element
= getElementOfClass(TracePackageFilesElement
.class, traceElement
.getChildren()).get(0);
139 assertTrue(element
instanceof TracePackageFilesElement
);
140 TracePackageFilesElement traceFilesElement
= (TracePackageFilesElement
) element
;
141 assertEquals(".*test\\.log\\.(\\d+)", traceFilesElement
.getFileName()); //$NON-NLS-1$
142 image
= traceFilesElement
.getImage();
143 assertNotNull(image
);
146 element
= getElementOfClass(RemoteImportConnectionNodeElement
.class, profileElement
.getChildren()).get(1);
147 assertTrue(element
instanceof RemoteImportConnectionNodeElement
);
148 nodeElement
= (RemoteImportConnectionNodeElement
) element
;
149 assertEquals("myhost3", nodeElement
.getName()); //$NON-NLS-1$
150 assertEquals("ssh://user@127.0.0.1:22", nodeElement
.getURI()); //$NON-NLS-1$
151 image
= nodeElement
.getImage();
152 assertNotNull(image
);
154 element
= getElementOfClass(RemoteImportTraceGroupElement
.class, nodeElement
.getChildren()).get(0);
155 assertTrue(element
instanceof RemoteImportTraceGroupElement
);
156 traceGroupElement
= (RemoteImportTraceGroupElement
) element
;
157 assertEquals("/home", traceGroupElement
.getRootImportPath()); //$NON-NLS-1$
158 assertFalse(traceGroupElement
.isRecursive());
159 image
= traceGroupElement
.getImage();
160 assertNotNull(image
);
162 element
= getElementOfClass(TracePackageTraceElement
.class, traceGroupElement
.getChildren()).get(0);
163 assertTrue(element
instanceof TracePackageTraceElement
);
164 traceElement
= (TracePackageTraceElement
) element
;
165 assertEquals("", traceElement
.getText()); //$NON-NLS-1$
166 assertEquals("trace.type", traceElement
.getTraceType()); //$NON-NLS-1$
168 element
= getElementOfClass(TracePackageFilesElement
.class, traceElement
.getChildren()).get(0);
169 assertTrue(element
instanceof TracePackageFilesElement
);
170 traceFilesElement
= (TracePackageFilesElement
) element
;
171 assertEquals(".*", traceFilesElement
.getFileName()); //$NON-NLS-1$
172 image
= traceFilesElement
.getImage();
173 assertNotNull(image
);
177 private static void validatePath(IPath profilePath
) throws Exception
{
178 try (FileInputStream inputStream
= new FileInputStream(
179 getProfilesFile(profilePath
))) {
180 RemoteImportProfilesReader
.validate(inputStream
);
184 private static TracePackageElement
[] loadElementsFromPath(IPath profilePath
)
186 try (FileInputStream inputStream
= new FileInputStream(
187 getProfilesFile(profilePath
))) {
188 return RemoteImportProfilesReader
.loadElementsFromProfiles(inputStream
);
192 private static <T
extends TracePackageElement
> List
<T
> getElementOfClass(
193 Class
<T
> clazz
, TracePackageElement
[] elements
) {
194 List
<T
> result
= new ArrayList
<>();
195 for (TracePackageElement element
: elements
) {
196 if (clazz
.isInstance(element
)) {
197 result
.add(clazz
.cast(element
));