https://github.com/chains-project/classport-experiments

Experiments related to the Classport projects

https://github.com/chains-project/classport-experiments

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.6%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Experiments related to the Classport projects

Basic Info
Statistics
  • Stars: 0
  • Watchers: 5
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 1 year ago · Last pushed 12 months ago
Metadata Files
Readme

README.md

Experiments - Testing runtime dependency introspection in Java with Classport

This repository contains the experiments to evaluate Classport tool. A tool for runtime dependencies introspection in Java. Each experiment includes scripts to automatically build, run, and collect performance data.

Repository structure

The repository is structured as follows:

  • 6 Maven Java projects (listed in the table below)
  • overhead folder contains the Java Microbenchmark Harness (JMH) implementation for each project to comput the runtime overhead
  • scripts folder contains the script necessarry to run the experiments
  • resources folder contains resources needed by the application under test to perform their workload

| Project | Version | Deps. | Workload | |--------|---------|-------|----------| | PDFBox-app | 3.0.4 | 12 | Extract text from a PDF file | | Certificate-ripper | 2.4.1 | 5 | Print the certificate of the CHAINS website | | mcs | 0.7.3 | 4 | Lookup dependency coordinates in Maven Central | | batik | 1.17 | 6 | Convert an SVG to PNG | | checkstyle | 10.23.0 | 34 | Lint a Java file | | zxing | 3.5.3 | 4 | Decode 4 QR codes |

Getting started

Requirements

  • Java 17+
  • Maven 3.8+

Setup

  1. Clone the Classport repo: bash git clone --recurse-submodules git@github.com:chains-project/classport.git

Check if the classport-experiments repo is not empty. If it is, do this:

```bash cd classport

Initialize and update all submodules

git submodule update --init --recursive ```

  1. Install Classport bash cd classport mvn install -DskipTests

How to run the experiments

The objective of the experiments is to test the two main feature of Classport: embedding dependency information into Java class files and instrospecting runtime dependencies during execution.

The experiments map the research questions of the paper:

RQ1. To what extent can Classport effectively embed dependencies into Java binary artifacts?

RQ2. To what extent does Classport support runtime inspection of dependencies?

RQ1 Experiments

Before running the experiments:

bash cd classport-experiments/scripts ./embed.sh <name-of-the-project>

where name-of-the-project can be: mcs, ripper, batik, checkstyle, or zxing.

For embedding pdfbox do this: bash cd classport-experiments/scripts ./embed_with_copy.sh pdfbox-3.0.4 pdfbox app

Class completeness

Check the class completeness:

bash ./check_if_deps_embedded.sh <name-of-the-project> where name-of-the-project can be: pdfbox, mcs, ripper, batik, checkstyle, or zxing.

The output reports the number of embedded and not embedded classes. It also reports the list of the not embedded files to show that there are no classes but other files, such as images, that are not executed by the JVM and are not part of our study.

Dependency completeness

bash ./check_if_deps_embedded.sh <name-of-the-project> --deps

The output lists the embedded dependencies and the ground truth.

Build time overhead

bash ./compute_build_overhead.sh <name-of-the-project>

Where name-of-the-project can be: pdfbox, mcs, ripper, batik, checkstyle, or zxing.

For build time overhead information check the output in the console.

Disk overhead

bash cd classport-experiments/scripts ./embed.sh <name-of-the-project>

where name-of-the-project can be: mcs, ripper, batik, checkstyle, or zxing.

For embedding pdfbox do this: bash cd classport-experiments/scripts ./embed_with_copy.sh pdfbox-3.0.4 pdfbox app

For disk overhead information check the output in the console.

RQ2 Experiments

This experiments must be run on the embedded projects, so firts embed them.

Dynamic correctness

Run the project with the workload in the table. The resuls is a csv file in the output folder (in scripts) with the list of detected dependencies.

```bash

pdfbox

./introspect_pdfbox.sh

mcs

./introspect_mcs.sh

ripper

./introspect_ripper.sh

batik

./introspect_wrapper.sh batik ../batikwrapper/src/main/resources

checkstyle

./introspect_checkstyle.sh

zxing

./introspect_wrapper.sh zxing ../zxing-wrapper/barcodes ```

Overhead

```bash cd overhead

pdfbox

cd pdfbox-overhead ./compute_overhead.sh

mcs

cd mcs-overhead ./compute_overhead.sh

ripper

cd ripper-overhead ./compute_overhead.sh

batik

cd batik-overhead ./compute_overhead.sh

checkstyle

cd checkstyle-overhead ./compute_overhead.sh

zxing

cd zxing-overhead ./compute_overhead.sh ```

In the project folder a result.json file is created with all the information about the execution time with and without Classport.

Owner

  • Name: CHAINS research project at KTH Royal Institute of Technology
  • Login: chains-project
  • Kind: organization

"Consistent Hardening and Analysis of Software Supply Chains" at KTH, funded by SSF

GitHub Events

Total
  • Delete event: 1
  • Issue comment event: 3
  • Member event: 1
  • Push event: 48
  • Pull request review event: 2
  • Pull request event: 5
  • Create event: 4
Last Year
  • Delete event: 1
  • Issue comment event: 3
  • Member event: 1
  • Push event: 48
  • Pull request review event: 2
  • Pull request event: 5
  • Create event: 4

Issues and Pull Requests

Last synced: about 1 year ago

All Time
  • Total issues: 0
  • Total pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 1 minute
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 1 minute
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • algomaster99 (4)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

certificate-ripper-2.4.1/pom.xml maven
  • info.picocli:picocli-codegen 4.7.6 provided
  • info.picocli:picocli 4.7.6
  • io.github.hakky54:sslcontext-kickstart 9.1.0
  • org.slf4j:slf4j-simple 2.0.17
  • io.github.hakky54:consolecaptor 1.0.3 test
  • io.github.hakky54:logcaptor 2.10.1 test
  • io.github.hakky54:ssl-server 1.0.6 test
  • org.assertj:assertj-core 3.27.3 test
  • org.junit.jupiter:junit-jupiter-api 5.12.0 test
  • org.junit.jupiter:junit-jupiter-engine 5.12.0 test
checkstyle-checkstyle-10.23.0/pom.xml maven
  • org.apache.ant:ant 1.10.15 provided
  • com.google.guava:guava 33.4.6-jre
  • commons-beanutils:commons-beanutils 1.10.1
  • info.picocli:picocli 4.7.6
  • net.sf.saxon:Saxon-HE 12.5
  • org.antlr:antlr4-runtime 4.13.2
  • org.apache.maven.doxia:doxia-core 1.12.0
  • org.apache.maven.doxia:doxia-module-xdoc 1.12.0
  • org.checkerframework:checker-qual 3.49.1
  • org.reflections:reflections 0.10.2
  • com.github.caciocavallosilano:cacio-tta 1.11 test
  • com.google.truth:truth 1.4.4 test
  • com.tngtech.archunit:archunit-junit5 1.4.0 test
  • commons-io:commons-io 2.18.0 test
  • de.thetaphi:forbiddenapis 3.8 test
  • nl.jqno.equalsverifier:equalsverifier 3.19.2 test
  • org.eclipse.jgit:org.eclipse.jgit 6.10.0.202406032230-r test
  • org.itsallcode:junit5-system-extensions 1.2.2 test
  • org.jacoco:org.jacoco.agent 0.8.12 test
  • org.junit-pioneer:junit-pioneer 2.3.0 test
  • org.junit.jupiter:junit-jupiter-api test
  • org.junit.jupiter:junit-jupiter-engine test
  • org.mockito:mockito-inline 5.2.0 test
  • org.slf4j:slf4j-simple 2.0.17 test
batikwrapper/pom.xml maven
  • org.apache.xmlgraphics:batik-codec 1.17
  • org.apache.xmlgraphics:batik-transcoder 1.17
commons-validator-1.9.0-src/pom.xml maven
  • commons-beanutils:commons-beanutils 1.9.4
  • commons-collections:commons-collections 3.2.2
  • commons-digester:commons-digester 2.1
  • commons-logging:commons-logging 1.3.2
  • org.apache.commons:commons-csv 1.11.0 test
  • org.apache.commons:commons-lang3 3.14.0 test
  • org.bitstrings.test:junit-clptr 1.2.2 test
  • org.junit.jupiter:junit-jupiter test
  • org.junit.vintage:junit-vintage-engine test