tmf remote: Bug 460847: Add Junits for XML reader/writer of remote fetch
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.remote.ui.tests / src / org / eclipse / tracecompass / tmf / remote / ui / tests / fetch / RemoteImportProfilesReaderTest.java
1 /*******************************************************************************
2 * Copyright (c) 2015 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Marc-Andre Laperle - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.tracecompass.tmf.remote.ui.tests.fetch;
14
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;
19
20 import java.io.FileInputStream;
21 import java.util.ArrayList;
22 import java.util.List;
23
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;
36
37 /**
38 * Test reading profiles from xml
39 */
40 public class RemoteImportProfilesReaderTest extends AbstractRemoteImportProfilesIOTest {
41
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$
48
49 /**
50 * Test a valid profiles file.
51 *
52 * @throws Exception
53 * on error
54 */
55 @Test
56 public void testValidateValid() throws Exception {
57 validatePath(VALID_PROFILE_PATH);
58 }
59
60 /**
61 * Test a profiles file with an empty profile element.
62 *
63 * @throws Exception
64 * on error
65 */
66 @Test(expected = SAXException.class)
67 public void testValidateInvalidEmptyProfile() throws Exception {
68 validatePath(INVALID_EMPTY_PROFILE_PATH);
69 }
70
71 /**
72 * Test a profiles file missing a files element under the trace element.
73 *
74 * @throws Exception
75 * on error
76 */
77 @Test(expected = SAXException.class)
78 public void testValidateInvalidMissingFiles() throws Exception {
79 validatePath(INVALID_MISSING_FILES_PROFILE_PATH);
80 }
81
82 /**
83 * Test a profiles file missing a root directory.
84 *
85 * @throws Exception
86 * on error
87 */
88 @Test(expected = SAXException.class)
89 public void testValidateInvalidMissingRoot() throws Exception {
90 validatePath(INVALID_MISSING_ROOT_PROFILE_PATH);
91 }
92
93 /**
94 * Test loading elements from a profiles file.
95 *
96 * @throws Exception
97 * on error
98 */
99 @Test
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);
105
106 RemoteImportProfileElement profileElement = (RemoteImportProfileElement) element;
107 assertEquals("myProfile", profileElement.getProfileName()); //$NON-NLS-1$
108
109 Image image = profileElement.getImage();
110 assertNotNull(image);
111 image.dispose();
112
113 assertEquals("profile children count", 2, profileElement.getChildren().length); //$NON-NLS-1$
114
115 // First node
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);
123
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);
131
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$
137
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);
144
145 // Second node
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);
153
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);
161
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$
167
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);
174
175 }
176
177 private static void validatePath(IPath profilePath) throws Exception {
178 try (FileInputStream inputStream = new FileInputStream(
179 getProfilesFile(profilePath))) {
180 RemoteImportProfilesReader.validate(inputStream);
181 }
182 }
183
184 private static TracePackageElement[] loadElementsFromPath(IPath profilePath)
185 throws Exception {
186 try (FileInputStream inputStream = new FileInputStream(
187 getProfilesFile(profilePath))) {
188 return RemoteImportProfilesReader.loadElementsFromProfiles(inputStream);
189 }
190 }
191
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));
198 }
199 }
200 return result;
201 }
202 }
This page took 0.04109 seconds and 5 git commands to generate.