blob: b87901cbf11f75a6b1873ac85a77e4841819fa34 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Marc-Andre Laperle - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.tmf.remote.ui.tests.fetch;
import static org.junit.Assert.assertEquals;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.model.RemoteImportConnectionNodeElement;
import org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.model.RemoteImportProfileElement;
import org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.model.RemoteImportProfilesReader;
import org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.model.RemoteImportProfilesWriter;
import org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.model.RemoteImportTraceGroupElement;
import org.eclipse.tracecompass.internal.tmf.ui.project.wizards.tracepkg.TracePackageElement;
import org.eclipse.tracecompass.internal.tmf.ui.project.wizards.tracepkg.TracePackageFilesElement;
import org.eclipse.tracecompass.internal.tmf.ui.project.wizards.tracepkg.TracePackageTraceElement;
import org.junit.Test;
/**
* Test writing profiles from XML
*/
public class RemoteImportProfilesWriterTest extends
AbstractRemoteImportProfilesIOTest {
private static final String ENCODING = "UTF-8"; //$NON-NLS-1$
private static final String LINE_SEPARATOR_PROPERTY = "line.separator";
/**
* Test writing a profiles file.
*
* @throws Exception
* on error
*/
@Test
public void testValidateValid() throws Exception {
String writtenXML = RemoteImportProfilesWriter.writeProfilesToXML(generateElements());
ByteArrayInputStream inputStream = new ByteArrayInputStream(
writtenXML.getBytes(ENCODING));
RemoteImportProfilesReader.validate(inputStream);
File expectedFile = getProfilesFile(VALID_PROFILE_PATH);
String expectedContent = new String(
Files.readAllBytes(Paths.get(expectedFile.toURI())), ENCODING);
// On windows, \r\n will be written to the XML. Replace them with \n for
// proper comparison.
String sysLineSeparator = System.getProperty(LINE_SEPARATOR_PROPERTY);
writtenXML = writtenXML.replace(sysLineSeparator, "\n");
assertEquals(expectedContent, writtenXML);
}
private static TracePackageElement[] generateElements() {
RemoteImportProfileElement profileElement = new RemoteImportProfileElement(
null, "myProfile"); //$NON-NLS-1$
RemoteImportConnectionNodeElement nodeElement = new RemoteImportConnectionNodeElement(profileElement,
"myhost", "ssh://user@127.0.0.1:22"); //$NON-NLS-1$//$NON-NLS-2$
RemoteImportTraceGroupElement traceGroupElement = new RemoteImportTraceGroupElement(
nodeElement, "/home/user/traces/test/test_with_lttng"); //$NON-NLS-1$
traceGroupElement.setRecursive(true);
// Profile 1 > Node 1 > Group 1
TracePackageTraceElement traceElement = new TracePackageTraceElement(
traceGroupElement,
"test.log.(group1)", "org.eclipse.tracecompass.tmf.remote.ui.test.tracetype1"); //$NON-NLS-1$//$NON-NLS-2$
new TracePackageFilesElement(traceElement, ".*test\\.log\\.(\\d+)"); //$NON-NLS-1$
traceElement = new TracePackageTraceElement(
traceGroupElement,
"TestLog.(group1)", "org.eclipse.tracecompass.tmf.remote.ui.test.tracetype2"); //$NON-NLS-1$//$NON-NLS-2$
new TracePackageFilesElement(traceElement, ".*TestLog\\.(\\d+)"); //$NON-NLS-1$
// Profile 1 > Node 1 > Group 2
traceGroupElement = new RemoteImportTraceGroupElement(nodeElement,
"/home/user/traces/test/"); //$NON-NLS-1$
traceGroupElement.setRecursive(false);
traceElement = new TracePackageTraceElement(traceGroupElement,
"lttng/(group1)", "org.eclipse.linuxtools.tmf.ui.type.ctf"); //$NON-NLS-1$//$NON-NLS-2$
new TracePackageFilesElement(traceElement, "lttng/(.*)"); //$NON-NLS-1$
// Profile 1 > Node 2 > Group 1
nodeElement = new RemoteImportConnectionNodeElement(profileElement,"myhost3", "ssh://user@127.0.0.1:22"); //$NON-NLS-1$//$NON-NLS-2$
traceGroupElement = new RemoteImportTraceGroupElement(nodeElement, "/home"); //$NON-NLS-1$
traceGroupElement.setRecursive(false);
traceElement = new TracePackageTraceElement(traceGroupElement, "", "trace.type"); //$NON-NLS-1$//$NON-NLS-2$
new TracePackageFilesElement(traceElement, ".*"); //$NON-NLS-1$
// Profile 2 > Node 1 > Group 1
RemoteImportProfileElement profileElement2 = new RemoteImportProfileElement(
null, "myProfile2"); //$NON-NLS-1$
RemoteImportConnectionNodeElement nodeElement2 = new RemoteImportConnectionNodeElement(profileElement2,
"myhost2", "ssh://user@142.111.222.333:22"); //$NON-NLS-1$//$NON-NLS-2$
traceGroupElement = new RemoteImportTraceGroupElement(nodeElement2,
"/home/user/traces/test/"); //$NON-NLS-1$
traceGroupElement.setRecursive(false);
traceElement = new TracePackageTraceElement(traceGroupElement,
"lttng/(group1)", "org.eclipse.linuxtools.tmf.ui.type.ctf"); //$NON-NLS-1$//$NON-NLS-2$
new TracePackageFilesElement(traceElement, "lttng/(.*)"); //$NON-NLS-1$
return new TracePackageElement[] { profileElement, profileElement2 };
}
}