gluetest
[ICSME '24 NIER] Artifact for GlueTest: Testing Code Translation via Language Interoperability
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
Repository
[ICSME '24 NIER] Artifact for GlueTest: Testing Code Translation via Language Interoperability
Basic Info
Statistics
- Stars: 4
- Watchers: 1
- Forks: 2
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
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.7is the latest version withgusupport.
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
- Repositories: 1
- Profile: https://github.com/seal-research
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
- junit:junit 4.13.2 test
- org.graalvm.sdk:graal-sdk 23.0.1 provided
- junit:junit 4.13.2 test
- junit:junit 4.13.2 test
- 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
- 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
- com.github.javaparser:javaparser-symbol-solver-core 3.25.5
- junit:junit 3.8.1 test