gluetest

[ICSME '24 NIER] Artifact for GlueTest: Testing Code Translation via Language Interoperability

https://github.com/seal-research/gluetest

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
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.3%) to scientific vocabulary

Keywords

software-engineering software-testing software-validation
Last synced: 6 months ago · JSON representation

Repository

[ICSME '24 NIER] Artifact for GlueTest: Testing Code Translation via Language Interoperability

Basic Info
  • Host: GitHub
  • Owner: seal-research
  • Language: Java
  • Default Branch: main
  • Homepage:
  • Size: 34.5 MB
Statistics
  • Stars: 4
  • Watchers: 1
  • Forks: 2
  • Open Issues: 0
  • Releases: 0
Topics
software-engineering software-testing software-validation
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme Citation

README.md

GlueTest: Testing Code Translation via Language Interoperability

This is an artifact for the paper "GlueTest: Testing Code Translation via Language Interoperability", presented at ICSME 2024 NIER ( link). The artifact repository is organized as follows:

| Project Title | Folder Name | Description | |---------------|-------------|-------------| | Commons CLI | commons-cli | Original Commons CLI source code and tests | | | commons-cli-python | Translated code and tests exclusively in Python | | | commons-cli-graal | Python source code, Java tests, and (Java) glue code for GraalVM | | Commons CSV | commons-csv | Original Commons CSV source code and tests | | | commons-csv-python | Translated code and tests exclusively in Python | | | commons-csv-graal | Python source code, Java tests, and (Java) glue code for GraalVM | | Graal Glue Generator | graal-glue-generator | Contains the source code for the glue code generator | | Scripts | scripts | Contains scripts to run local coverage, coverage through CI, collecting clients, and generating glue code |

Setting up GraalVM and GraalPython

To run the GraalVM integration, we need to install the GraalVM SDK and the python language component. To install GraalVM, we use the SDKMAN! tool. To install SDKMAN!, run the following command from the SDKMAN! website: bash curl -s "https://get.sdkman.io" | bash After installing SDKMAN!, install GraalVM (Java 17) using the following command from their website: bash sdk install java 17.0.7-graal

[!NOTE] Later revisions re-work how GraalPython is installed. 17.0.7 is the latest version with gu support.

After installing GraalVM, we need to install the python component. To do so, we run: bash gu install python

Running Tests

All commands for running tests can be found in the run.sh file in the root directory, and can be run with: bash bash run.sh

To see a description for each command, please see the following sections.

Running the original Java tests

```bash

Commons CLI

mvn -f commons-cli/pom.xml test -Drat.skip

Commons CSV

mvn -f commons-csv/pom.xml test -Drat.skip ```

[!NOTE] This step requires maven to be installed. If maven is not installed, see their web page for installation instructions.

Running the translated Python Tests

In order to run the python tests, pytest is needed and can be installed with the following command: bash python -m pip install pytest Then, the python tests can be run with: ```bash

Commons CLI

pytest commons-cli-python

Commons CSV

pytest commons-csv-python ```

[!NOTE] We use CPython 3.11.4 for running our translation tests. Please ensure a compatible of Python is installed before running tests.

Running glue code tests with GraalVM

```bash

Commons CLI

mvn -f commons-cli-graal/pom.xml test -Drat.skip

Commons CSV

mvn -f commons-csv-graal/pom.xml test -Drat.skip ```

Measure coverage

Coverage for our glue code is measured using a python script, cover.py in the scripts/ directory. To run coverage, we run the local version of our script: bash python scripts/coverage/cover_local.py

Running the Glue Automation

To automatically generate glue for all classes in Commons CLI and Commons CSV, run the following from the root directory: bash python scripts/generate_glue.py

The glue code automation will generate the files under the generated/commons-cli and generated/commons-csv directories, which can be used as drop-in replacements for the glue code in commons-cli-graal and commons-csv-graal respectively.

Collecting Clients

We provide the scripts for scraping clients under scripts/clients/selenium.py. The scripts/clients/bash_script_version.sh script can further be used to extract the versions of the libraries used by the clients.

Citation

bibtex @inproceedings{gluetest, title={GlueTest: Testing Code Translation via Language Interoperability}, author={Abid, Muhammad Salman and Pawagi, Mrigank and Adhikari, Sugam and Cheng, Xuyan and Badr, Ryed and Wahiduzzaman, Md and Rathi, Vedant and Qi, Ronghui and Li, Choiyin and Liu, Lu and Naidu, Rohit Sai and Lin, Licheng and Liu, Que and Palak, Asif Zubayer and Haque, Mehzabin and Chen, Xinyu and Marinov, Darko and Dutta, Saikat}, booktitle={IEEE International Conference on Software Maintenance and Evolution}, year={2024}, doi={10.1109/ICSME58944.2024.00061} }

Owner

  • Name: seal-research
  • Login: seal-research
  • Kind: organization

GitHub Events

Total
  • Watch event: 4
  • Delete event: 1
  • Issue comment event: 1
  • Public event: 1
  • Push event: 5
  • Pull request review event: 1
  • Pull request event: 2
  • Fork event: 2
  • Create event: 1
Last Year
  • Watch event: 4
  • Delete event: 1
  • Issue comment event: 1
  • Public event: 1
  • Push event: 5
  • Pull request review event: 1
  • Pull request event: 2
  • Fork event: 2
  • Create event: 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 17 minutes
  • 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: 17 minutes
  • 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
  • msalman-abid (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

commons-cli/pom.xml maven
  • junit:junit 4.13.2 test
commons-cli-graal/pom.xml maven
  • org.graalvm.sdk:graal-sdk 23.0.1 provided
  • junit:junit 4.13.2 test
commons-cli-python/pom.xml maven
  • junit:junit 4.13.2 test
commons-csv/pom.xml maven
  • com.h2database:h2 1.4.196 test
  • commons-io:commons-io 2.6 test
  • junit:junit 4.12 test
  • org.apache.commons:commons-lang3 3.7 test
  • org.hamcrest:hamcrest 2.2 test
  • org.mockito:mockito-core 4.11.0 test
commons-csv-graal/pom.xml maven
  • org.graalvm.sdk:graal-sdk 23.0.1 provided
  • com.h2database:h2 1.4.196 test
  • commons-io:commons-io 2.6 test
  • junit:junit 4.12 test
  • org.apache.commons:commons-lang3 3.7 test
  • org.hamcrest:hamcrest 2.2 test
  • org.mockito:mockito-core 4.11.0 test
graal-glue-generator/pom.xml maven
  • com.github.javaparser:javaparser-symbol-solver-core 3.25.5
  • junit:junit 3.8.1 test