diff options
author | Jan Srnicek <jsrnicek@cisco.com> | 2017-07-21 15:10:46 +0200 |
---|---|---|
committer | Marek Gradzki <mgradzki@cisco.com> | 2017-07-25 12:28:32 +0200 |
commit | aa44951faf04e2cddfc537bbc9f6a18d76c76ec1 (patch) | |
tree | 5d12ef3105e49495db20dcb052a76d23c953cc03 /vpp-integration/api-docs/api | |
parent | 4f15c1ba2bec17a5e62e3bb2656454abb86ca6e5 (diff) |
HC2VPP-180 - Doc coverage generator
TODO - links to specific vpp api section(now points
just to section with apis)
TODO - links to specific java binding code(now
points to class thats doing binding)
TODO - operational coverage(ASM does not support lambda processing)
TODO - generate coverage adoc links
Change-Id: I44c85012da3bd2e7cdd41930753e5aae6955cd7b
Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
Diffstat (limited to 'vpp-integration/api-docs/api')
8 files changed, 539 insertions, 0 deletions
diff --git a/vpp-integration/api-docs/api/asciidoc/Readme.adoc b/vpp-integration/api-docs/api/asciidoc/Readme.adoc new file mode 100644 index 000000000..145404972 --- /dev/null +++ b/vpp-integration/api-docs/api/asciidoc/Readme.adoc @@ -0,0 +1,13 @@ += docs-api + +Defines general api for VPP binary api coverage + +== Elements + +* PluginCoverage - Contains coverage data for single JVPP plugin, including supported + VPP binary equivalents in JVpp, what Yang nodes are bind to such api and what operations are + supported +* VppApiMessage - Reference to single VPP binary api with link to its documentation +* JavaApiMessage - Reference to JVpp equivalent of VPP binary api +* YangType - Reference to single Yang type with link to its model +* Operation - reference to single CRUD operation with link to binding class
\ No newline at end of file diff --git a/vpp-integration/api-docs/api/pom.xml b/vpp-integration/api-docs/api/pom.xml new file mode 100644 index 000000000..9c40d1f65 --- /dev/null +++ b/vpp-integration/api-docs/api/pom.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (c) 2017 Cisco and/or its affiliates. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at: + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>hc2vpp-parent</artifactId> + <groupId>io.fd.hc2vpp.common</groupId> + <version>1.17.10-SNAPSHOT</version> + <relativePath>../../../common/hc2vpp-parent</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>docs-api</artifactId> + <groupId>io.fd.hc2vpp.docs</groupId> + <version>1.17.10-SNAPSHOT</version> + +</project>
\ No newline at end of file diff --git a/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/CoverageUnit.java b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/CoverageUnit.java new file mode 100644 index 000000000..06cb59f69 --- /dev/null +++ b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/CoverageUnit.java @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.hc2vpp.docs.api; + +import java.util.List; +import java.util.Objects; + +/** + * Represents mapping between single supported VPP binary api and its binding + */ +public class CoverageUnit { + + /** + * VPP binary api reference + */ + private final VppApiMessage vppApi; + + /** + * Java equivalent of VPP binary api + */ + private final JavaApiMessage javaApi; + + /** + * Yang types used to bind this request + */ + private final List<YangType> yangTypes; + + /** + * Operations supported for this api + */ + private final List<Operation> supportedOperations; + + private CoverageUnit(final VppApiMessage vppApi, final JavaApiMessage javaApi, + final List<YangType> yangTypes, + final List<Operation> supportedOperations) { + this.vppApi = vppApi; + this.javaApi = javaApi; + this.yangTypes = yangTypes; + this.supportedOperations = supportedOperations; + } + + public VppApiMessage getVppApi() { + return vppApi; + } + + public JavaApiMessage getJavaApi() { + return javaApi; + } + + public List<YangType> getYangTypes() { + return yangTypes; + } + + public List<Operation> getSupportedOperations() { + return supportedOperations; + } + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + final CoverageUnit that = (CoverageUnit) o; + + return Objects.equals(this.vppApi, that.vppApi) && + Objects.equals(this.javaApi, that.javaApi) && + Objects.equals(this.yangTypes, that.yangTypes) && + Objects.equals(this.supportedOperations, that.supportedOperations); + } + + @Override + public int hashCode() { + return Objects.hash(vppApi, javaApi, yangTypes, supportedOperations); + } + + public static class CoverageUnitBuilder { + private VppApiMessage vppApi; + private JavaApiMessage javaApi; + private List<YangType> yangTypes; + private List<Operation> supportedOperations; + + public CoverageUnitBuilder setVppApi(final VppApiMessage vppApi) { + this.vppApi = vppApi; + return this; + } + + public CoverageUnitBuilder setJavaApi(final JavaApiMessage javaApi) { + this.javaApi = javaApi; + return this; + } + + public CoverageUnitBuilder setYangTypes(final List<YangType> yangTypes) { + this.yangTypes = yangTypes; + return this; + } + + public CoverageUnitBuilder setSupportedOperations(final List<Operation> supportedOperations) { + this.supportedOperations = supportedOperations; + return this; + } + + public CoverageUnit build() { + return new CoverageUnit(vppApi, javaApi, yangTypes, supportedOperations); + } + } +} diff --git a/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/JavaApiMessage.java b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/JavaApiMessage.java new file mode 100644 index 000000000..db4575c5a --- /dev/null +++ b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/JavaApiMessage.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.hc2vpp.docs.api; + +import java.util.Objects; + +/** + * Reference of Java equivalent of VPP binary api + */ +public class JavaApiMessage { + + /** + * Name of the call + */ + private final String api; + + public JavaApiMessage(final String api) { + this.api = api; + } + + public String getApi() { + return api; + } + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + final JavaApiMessage that = (JavaApiMessage) o; + return Objects.equals(this.api, that.api); + } + + @Override + public int hashCode() { + return Objects.hash(api); + } +} diff --git a/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/Operation.java b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/Operation.java new file mode 100644 index 000000000..e471fb6bf --- /dev/null +++ b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/Operation.java @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.hc2vpp.docs.api; + +import java.util.Objects; + +/** + * Reference to single crud operation + */ +public class Operation { + + /** + * Git link to class that performs referenced operation + */ + private final String link; + //TODO - investigate option to link directly to line number + + /** + * Type of crud operation + */ + private final CrudOperation operation; + + public Operation(final String link, final CrudOperation operation) { + this.link = link; + this.operation = operation; + } + + public String getLink() { + return link; + } + + public CrudOperation getOperation() { + return operation; + } + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + final Operation that = (Operation) o; + + return Objects.equals(this.link, that.link) && + Objects.equals(this.operation, that.operation); + } + + @Override + public int hashCode() { + return Objects.hash(link, operation); + } + + public enum CrudOperation { + WRITE("Write", "writeCurrentAttributes"), + UPDATE("Update", "updateCurrentAttributes"), + DELETE("Delete", "deleteCurrentAttributes"), + READ_ALL("Read all", "getAllIds"), + READ_ONE("Read details", "readCurrentAttributes"); + + private final String displayName; + private final String methodReference; + + CrudOperation(final String displayName, final String methodReference) { + this.displayName = displayName; + this.methodReference = methodReference; + } + + public String getMethodReference() { + return methodReference; + } + + public String getDisplayName() { + return displayName; + } + } +} diff --git a/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/PluginCoverage.java b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/PluginCoverage.java new file mode 100644 index 000000000..8e62e9ca3 --- /dev/null +++ b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/PluginCoverage.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.hc2vpp.docs.api; + +import java.util.Objects; +import java.util.Set; + +/** + * Represents coverage data for single VPP plugin + */ +public class PluginCoverage { + + /** + * Name of the covered plugin + */ + private final String pluginName; + + /** + * Coverage data + */ + private final Set<CoverageUnit> coverage; + + /** + * Whether this is config or operational coverage + */ + private final boolean isConfig; + + public PluginCoverage(final String pluginName, final Set<CoverageUnit> coverage, final boolean isConfig) { + this.pluginName = pluginName; + this.coverage = coverage; + this.isConfig = isConfig; + } + + public String getPluginName() { + return pluginName; + } + + public Set<CoverageUnit> getCoverage() { + return coverage; + } + + public boolean isConfig() { + return isConfig; + } + + public boolean hasCoverage() { + return !coverage.isEmpty(); + } + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + final PluginCoverage that = (PluginCoverage) o; + + return Objects.equals(this.isConfig, that.isConfig) && + Objects.equals(this.pluginName, that.pluginName) && + Objects.equals(this.coverage, that.coverage); + } + + @Override + public int hashCode() { + return Objects.hash(this.pluginName, this.coverage, this.isConfig); + } +} + diff --git a/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/VppApiMessage.java b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/VppApiMessage.java new file mode 100644 index 000000000..78010471a --- /dev/null +++ b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/VppApiMessage.java @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.hc2vpp.docs.api; + +import java.util.Objects; + +/** + * Represents reference to VPP binary api + */ +public class VppApiMessage { + + /** + * Name of the api + */ + private final String name; + + /** + * fd.io doc link + */ + // TODO - check if possible to add direct link for specific api + private final String link; + + public VppApiMessage(final String name, final String link) { + this.name = name; + this.link = link; + } + + public String getName() { + return name; + } + + public String getLink() { + return link; + } + + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + final VppApiMessage that = (VppApiMessage) o; + + return Objects.equals(this.name, that.name) && Objects.equals(this.link, that.link); + } + + @Override + public int hashCode() { + return Objects.hash(name, link); + } +} diff --git a/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/YangType.java b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/YangType.java new file mode 100644 index 000000000..a2585acf6 --- /dev/null +++ b/vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/YangType.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.hc2vpp.docs.api; + +import java.util.Objects; + +/** + * Represents Yang type used to bind VPP api's + */ +public class YangType { + + /** + * Fully qualified name of Yang type + */ + private final String type; + + /** + * Git link to its model origin + */ + private final String link; + + public YangType(final String type, final String link) { + this.type = type; + this.link = link; + } + + public String getType() { + return type; + } + + public String getLink() { + return link; + } + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + final YangType that = (YangType) o; + return Objects.equals(this.type, that.type) && !Objects.equals(this.link, that.link); + } + + @Override + public int hashCode() { + return Objects.hash(type, link); + } +} |