X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2Ftest%2FTestUtils.java;h=532e29df66dbe5962ab246e56b674710fede7622;hb=d8654e1e998855eb4a24af909c35b760e7a7c79b;hp=c32e3505097b9d07c9f881935ab336604b7b8c4c;hpb=25563418e1867be44ab8d829db30360df60ee1c9;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/TestUtils.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/TestUtils.java index c32e350509..532e29df66 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/TestUtils.java +++ b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/TestUtils.java @@ -1,15 +1,16 @@ package org.opendaylight.controller.sal.restconf.impl.test; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStreamWriter; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; + +import java.io.*; +import java.net.*; +import java.sql.Date; import java.util.ArrayList; import java.util.List; import java.util.Set; +import javax.ws.rs.WebApplicationException; import javax.xml.stream.XMLStreamException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; @@ -18,12 +19,12 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.Node; -import org.opendaylight.yangtools.yang.data.api.SimpleNode; -import org.opendaylight.yangtools.yang.data.impl.XmlTreeBuilder; -import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.controller.sal.rest.impl.*; +import org.opendaylight.controller.sal.restconf.impl.StructuredData; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.*; +import org.opendaylight.yangtools.yang.data.impl.*; +import org.opendaylight.yangtools.yang.model.api.*; import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser; import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl; import org.slf4j.Logger; @@ -45,7 +46,9 @@ final class TestUtils { } for (int i = 0; i < fileList.length; i++) { String fileName = fileList[i]; - testFiles.add(new File(testDir, fileName)); + if (new File(testDir, fileName).isDirectory() == false) { + testFiles.add(new File(testDir, fileName)); + } } return parser.parseYangModels(testFiles); } @@ -113,4 +116,153 @@ final class TestUtils { } + static String convertCompositeNodeDataAndYangToJson(CompositeNode compositeNode, String yangPath, String outputPath) { + String jsonResult = null; + Set modules = null; + + try { + modules = TestUtils.loadModules(ToJsonBasicDataTypesTest.class.getResource(yangPath).getPath()); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + assertNotNull("modules can't be null.", modules); + + assertNotNull("Composite node can't be null", compositeNode); + + StructuredDataToJsonProvider structuredDataToJsonProvider = StructuredDataToJsonProvider.INSTANCE; + for (Module module : modules) { + ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream(); + for (DataSchemaNode dataSchemaNode : module.getChildNodes()) { + StructuredData structuredData = new StructuredData(compositeNode, dataSchemaNode); + try { + structuredDataToJsonProvider.writeTo(structuredData, null, null, null, null, null, byteArrayOS); + } catch (WebApplicationException | IOException e) { + e.printStackTrace(); + } + assertFalse( + "Returning JSON string can't be empty for node " + dataSchemaNode.getQName().getLocalName(), + byteArrayOS.toString().isEmpty()); + } + jsonResult = byteArrayOS.toString(); + try { + outputToFile(byteArrayOS, outputPath); + } catch (IOException e) { + System.out.println("Output file wasn't cloased sucessfuly."); + } + + } + return jsonResult; + } + + static CompositeNode loadCompositeNode(String xmlDataPath) { + InputStream xmlStream = ToJsonBasicDataTypesTest.class.getResourceAsStream(xmlDataPath); + CompositeNode compositeNode = null; + try { + compositeNode = TestUtils.loadCompositeNode(xmlStream); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + return compositeNode; + } + + static void outputToFile(ByteArrayOutputStream outputStream, String outputDir) throws IOException { + FileOutputStream fileOS = null; + try { + String path = ToJsonBasicDataTypesTest.class.getResource(outputDir).getPath(); + File outFile = new File(path + "/data.json"); + fileOS = new FileOutputStream(outFile); + try { + fileOS.write(outputStream.toByteArray()); + } catch (IOException e) { + e.printStackTrace(); + } + fileOS.close(); + } catch (FileNotFoundException e1) { + e1.printStackTrace(); + } + } + + static String readJsonFromFile(String path, boolean removeWhiteChars) { + FileReader fileReader = getFileReader(path); + + StringBuilder strBuilder = new StringBuilder(); + char[] buffer = new char[1000]; + + while (true) { + int loadedCharNum; + try { + loadedCharNum = fileReader.read(buffer); + } catch (IOException e) { + break; + } + if (loadedCharNum == -1) { + break; + } + strBuilder.append(buffer, 0, loadedCharNum); + } + try { + fileReader.close(); + } catch (IOException e) { + System.out.println("The file wasn't closed"); + } + String rawStr = strBuilder.toString(); + if (removeWhiteChars) { + rawStr = rawStr.replace("\n", ""); + rawStr = rawStr.replace("\r", ""); + rawStr = rawStr.replace("\t", ""); + rawStr = removeSpaces(rawStr); + } + + return rawStr; + } + + private static FileReader getFileReader(String path) { + String fullPath = ToJsonBasicDataTypesTest.class.getResource(path).getPath(); + assertNotNull("Path to file can't be null.", fullPath); + File file = new File(fullPath); + assertNotNull("File can't be null", file); + FileReader fileReader = null; + try { + fileReader = new FileReader(file); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + assertNotNull("File reader can't be null.", fileReader); + return fileReader; + } + + private static String removeSpaces(String rawStr) { + StringBuilder strBuilder = new StringBuilder(); + int i = 0; + int quoteCount = 0; + while (i < rawStr.length()) { + if (rawStr.substring(i, i + 1).equals("\"")) { + quoteCount++; + } + + if (!rawStr.substring(i, i + 1).equals(" ") || (quoteCount % 2 == 1)) { + strBuilder.append(rawStr.charAt(i)); + } + i++; + } + + return strBuilder.toString(); + } + + static QName buildQName(String name, String uri, String date) { + try { + URI u = new URI(uri); + Date dt = null; + if (date != null) { + dt = Date.valueOf(date); + } + return new QName(u, dt, name); + } catch (URISyntaxException e) { + return null; + } + } + + static QName buildQName(String name) { + return buildQName(name, "", null); + } }