Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add test for spectrum urls #404

Merged
merged 9 commits into from
Oct 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .github/workflows/scheduled-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Scheduled Checks

on:
schedule:
- cron: '30 1 1 * *'
jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: '3.10'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest ads
pip install astrodbkit2

- name: Test with pytest
run: |
pytest -s tests/scheduled_tests.py
66 changes: 66 additions & 0 deletions tests/scheduled_checks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import os
import pytest
import sys
import requests
from astrodbkit2.astrodb import create_database, Database
from scripts.ingests.utils import check_internet_connection

sys.path.append(".")
from simple.schema import *
from . import REFERENCE_TABLES


DB_NAME = "temp.db"
DB_PATH = "data"


# Load the database for use in individual tests
@pytest.fixture(scope="module")
def db():
# Create a fresh temporary database and assert it exists
# Because we've imported simple.schema, we will be using that schema for the database

if os.path.exists(DB_NAME):
os.remove(DB_NAME)
connection_string = "sqlite:///" + DB_NAME
create_database(connection_string)
assert os.path.exists(DB_NAME)

# Connect to the new database and confirm it has the Sources table
db = Database(connection_string, reference_tables=REFERENCE_TABLES)
assert db
assert "source" in [c.name for c in db.Sources.columns]

# Load data into an in-memory sqlite database first, for performance

# create and connects to a temporary in-memory database
temp_db = Database("sqlite://", reference_tables=REFERENCE_TABLES)

# load the data from the data files into the database
temp_db.load_database(DB_PATH, verbose=False)

# dump in-memory database to file
temp_db.dump_sqlite(DB_NAME)
# replace database object with new file version
db = Database("sqlite:///" + DB_NAME, reference_tables=REFERENCE_TABLES)

return db


def test_spectra_urls(db):
spectra_urls = db.query(db.Spectra.c.spectrum).astropy()
broken_urls = []
codes = []
internet = check_internet_connection()
if internet:
kelle marked this conversation as resolved.
Show resolved Hide resolved
for spectrum_url in spectra_urls["spectrum"]:
request_response = requests.head(spectrum_url)
status_code = request_response.status_code
# The website is up if the status code is 200
# cuny academic commons links give 301 status code
if status_code != 200 and status_code != 301:
broken_urls.append(spectrum_url)
codes.append(status_code)
assert (
len(broken_urls) == 149
), f"found {len(broken_urls)} broken spectra urls: {broken_urls}, {codes}"
9 changes: 6 additions & 3 deletions tests/test_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
import os
import pytest
import sys
from astrodbkit2.astrodb import create_database, Database
from sqlalchemy import except_, select, and_

sys.path.append('.')
from simple.schema import *
from astrodbkit2.astrodb import create_database, Database
from sqlalchemy import except_, select, and_
from . import REFERENCE_TABLES


DB_NAME = 'temp.db'
DB_PATH = 'data'

Expand Down Expand Up @@ -448,6 +449,7 @@ def test_spectral_types(db):
n_spectral_types = db.query(db.SpectralTypes).count()
assert len(m_dwarfs) + len(l_dwarfs) + len(t_dwarfs) + len(y_dwarfs) == n_spectral_types


# Individual ingest tests
# -----------------------------------------------------------------------------------------
def test_Manj19_data(db):
Expand Down Expand Up @@ -533,7 +535,7 @@ def test_Kirk19_ingest(db):

# Test spectral types added

# Test parallaxes
# Test parallaxes
ref = 'Kirk19'
t = db.query(db.Parallaxes).filter(db.Parallaxes.c.reference == ref).astropy()
assert len(t) == 23, f'found {len(t)} parallax entries for {ref}'
Expand Down Expand Up @@ -597,6 +599,7 @@ def test_suar22_ingest(db):
t = db.query(db.Spectra).filter(db.Spectra.c.reference == ref).astropy()
assert len(t) == 112, f'found {len(t)} spectra entries for {ref}'


def test_modeledparameters(db):
# Test to verify existing counts of modeled parameters
ref = 'Fili15'
Expand Down