Skip to content

Commit

Permalink
Fix some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
lvarin committed Dec 7, 2023
1 parent 9dafefe commit 905f3dc
Show file tree
Hide file tree
Showing 7 changed files with 14 additions and 164 deletions.
20 changes: 0 additions & 20 deletions src/tesk_core/extract_endpoint.py

This file was deleted.

2 changes: 0 additions & 2 deletions src/tesk_core/filer.py
Original file line number Diff line number Diff line change
Expand Up @@ -413,8 +413,6 @@ def fileTransputIfEnabled():
elif scheme == 'file':
return fileTransputIfEnabled()
elif scheme in ['http', 'https']:
if 's3' in netloc:
return S3Transput
return HTTPTransput
elif scheme == 's3':
return S3Transput
Expand Down
35 changes: 3 additions & 32 deletions src/tesk_core/filer_s3.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,40 +36,12 @@ def check_if_bucket_exists(self, client):

def get_bucket_name_and_file_path(self):
"""
if the S3 url is similar to s3://idr-bucket-1/README.txt format
If the S3 url is similar to s3://idr-bucket-1/README.txt format
"""
if self.url.startswith("s3"):
self.url_path = re.sub(r's3:\/', "", self.url)

"""
If the s3 url are of following formats
1. File type = FILE
* http://mybucket.s3.amazonaws.com/file.txt
* http://mybucket.s3-aws-region.amazonaws.com/file.txt
* http://s3.amazonaws.com/mybucket/file.txt
* http://s3-aws-region.amazonaws.com/mybucket/file.txt
* s3://mybucket/file.txt
return values will be
bucket name = mybucket , file path = file.txt
2. File type = DIRECTORY
* http://mybucket.s3.amazonaws.com/dir1/dir2/
* http://mybucket.s3-aws-region.amazonaws.com/dir1/dir2/
* http://s3.amazonaws.com/mybucket/dir1/dir2/
* http://s3-aws-region.amazonaws.com/mybucket/dir1/dir2/
* s3://mybucket/dir1/dir2/
return values will be
bucket name = mybucket , file path = dir1/dir2/
"""
bucket = self.netloc
file_path = self.url_path[1:]

match = re.search('^([^.]+).s3', self.netloc)
if match:
bucket = match.group(1)
else:
bucket = self.url_path.split("/")[1]
file_path = re.sub(r'^\/' + bucket + '\/', "", self.url_path).lstrip("/")
return bucket, file_path

def download_file(self):
Expand Down Expand Up @@ -143,4 +115,3 @@ def get_s3_file(self, file_name, key):
logging.error(err.response['Error']['Message'])
return 1
return 0

2 changes: 1 addition & 1 deletion src/tesk_core/taskmaster.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ def init_pvc(data, filer):
return pvc


def run_task(data, filer_name, filer_version, have_json_pvc):
def run_task(data, filer_name, filer_version, have_json_pvc=False):
task_name = data['executors'][0]['metadata']['labels']['taskmaster-name']
pvc = None

Expand Down
35 changes: 0 additions & 35 deletions tests/test_extract_endpoint.py

This file was deleted.

4 changes: 2 additions & 2 deletions tests/test_filer.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ def test_newTransput(self):
self.assertEqual(newTransput('https', 'test.com'), HTTPTransput)
self.assertEqual(newTransput('file', '/home/tfga/workspace/'), FileTransput)
self.assertEqual(newTransput('s3', '/home/tfga/workspace/'), S3Transput)
self.assertEqual(newTransput('http', 's3.aws.com'), S3Transput)
self.assertEqual(newTransput('http', 's3.aws.com'), HTTPTransput)

self.assertThrows(lambda: newTransput('svn', 'example.com')
, UnknownProtocol
Expand Down Expand Up @@ -248,4 +248,4 @@ def test_newTransput_file_disabled(self):

if __name__ == "__main__":
# import sys;sys.argv = ['', 'Test.testName']
unittest.main()
unittest.main()
80 changes: 8 additions & 72 deletions tests/test_s3_filer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import pytest
import boto3
from tesk_core.filer_s3 import S3Transput
from tesk_core.extract_endpoint import extract_endpoint
#from tesk_core.extract_endpoint import extract_endpoint
from moto import mock_s3
from unittest.mock import patch, mock_open

Expand All @@ -16,24 +16,8 @@ def moto_boto():
yield

@pytest.mark.parametrize("path, url, ftype,expected", [
("/home/user/filer_test/file.txt", "http://tesk.s3.amazonaws.com/folder/file.txt","FILE",
("tesk","folder/file.txt")),
("/home/user/filer_test/file.txt", "http://tesk.s3-aws-region.amazonaws.com/folder/file.txt","FILE",
("tesk","folder/file.txt")),
("/home/user/filer_test/file.txt", "http://s3.amazonaws.com/tesk/folder/file.txt","FILE",
("tesk","folder/file.txt")),
("/home/user/filer_test/file.txt", "http://s3-aws-region.amazonaws.com/tesk/folder/file.txt","FILE",
("tesk","folder/file.txt")),
("/home/user/filer_test/file.txt", "s3://tesk/folder/file.txt","FILE",
("tesk","folder/file.txt")),
("/home/user/filer_test/file.txt", "http://tesk.s3.amazonaws.com/folder1/folder2","DIRECTORY",
("tesk","folder1/folder2")),
("/home/user/filer_test/file.txt", "http://tesk.s3-aws-region.amazonaws.com/folder1/folder2","DIRECTORY",
("tesk","folder1/folder2")),
("/home/user/filer_test/file.txt", "http://s3.amazonaws.com/tesk/folder1/folder2","DIRECTORY",
("tesk","folder1/folder2")),
("/home/user/filer_test/file.txt", "http://s3-aws-region.amazonaws.com/tesk/folder1/folder2","DIRECTORY",
("tesk","folder1/folder2")),
("/home/user/filer_test/file.txt", "s3://tesk/folder1/folder2","DIRECTORY",
("tesk","folder1/folder2")),
])
Expand All @@ -45,25 +29,9 @@ def test_get_bucket_name_and_file_path( moto_boto, path, url, ftype,expected):
assert trans.get_bucket_name_and_file_path() == expected

@pytest.mark.parametrize("path, url, ftype,expected", [
("/home/user/filer_test/file.txt", "http://tesk.s3.amazonaws.com/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "http://tesk.s3-aws-region.amazonaws.com/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "http://s3.amazonaws.com/tesk/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "http://s3-aws-region.amazonaws.com/tesk/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "s3://tesk/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "http://mybucket.s3.amazonaws.com/folder/file.txt","FILE",1),
("/home/user/filer_test/file.txt", "http://mybucket.s3-aws-region.amazonaws.com/folder/file.txt","FILE",1),
("/home/user/filer_test/file.txt", "http://s3.amazonaws.com/mybucket/folder/file.txt","FILE",1),
("/home/user/filer_test/file.txt", "http://s3-aws-region.amazonaws.com/mybucket/folder/file.txt","FILE",1),
("/home/user/filer_test/file.txt", "s3://mybucket/folder/file.txt","FILE",1),
("/home/user/filer_test/", "http://tesk.s3.amazonaws.com/folder1/folder2","DIRECTORY",0),
("/home/user/filer_test/", "http://tesk.s3-aws-region.amazonaws.com/folder1/folder2","DIRECTORY",0),
("/home/user/filer_test/", "http://s3.amazonaws.com/tesk/folder1/folder2","DIRECTORY",0),
("/home/user/filer_test/", "http://s3-aws-region.amazonaws.com/tesk/folder1/folder2","DIRECTORY",0),
("/home/user/filer_test/", "s3://tesk/folder1/folder2","DIRECTORY",0),
("/home/user/filer_test/", "http://mybucket.s3.amazonaws.com/folder1/folder2","DIRECTORY",1),
("/home/user/filer_test/", "http://mybucket.s3-aws-region.amazonaws.com/folder1/folder2","DIRECTORY",1),
("/home/user/filer_test/", "http://s3.amazonaws.com/mybucket/folder1/folder2","DIRECTORY",1),
("/home/user/filer_test/", "http://s3-aws-region.amazonaws.com/mybucket/folder1/folder2","DIRECTORY",1),
("/home/user/filer_test/", "s3://mybucket/folder1/folder2","DIRECTORY",1)
])
def test_check_if_bucket_exists(moto_boto, path, url, ftype, expected):
Expand All @@ -78,15 +46,7 @@ def test_check_if_bucket_exists(moto_boto, path, url, ftype, expected):
# @patch('builtins.open')
# @patch('s3transfer.utils.OSUtils.rename_file')
@pytest.mark.parametrize("path, url, ftype,expected", [
("/home/user/filer_test/file.txt", "http://tesk.s3.amazonaws.com/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "http://tesk.s3-aws-region.amazonaws.com/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "http://s3.amazonaws.com/tesk/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "http://s3-aws-region.amazonaws.com/tesk/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "s3://tesk/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "http://tesk.s3.amazonaws.com/folder/file_new.txt","FILE",1),
("/home/user/filer_test/file.txt", "http://tesk.s3-aws-region.amazonaws.com/folder/file_new.txt","FILE",1),
("/home/user/filer_test/file.txt", "http://s3.amazonaws.com/tesk/folder/file_new.txt","FILE",1),
("/home/user/filer_test/file.txt", "http://s3-aws-region.amazonaws.com/tesk/folder/file_new.txt","FILE",1),
("/home/user/filer_test/file.txt", "s3://tesk/folder/file_new.txt","FILE",1),
])
def test_s3_download_file( moto_boto, path, url, ftype, expected, fs, caplog):
Expand All @@ -105,20 +65,12 @@ def test_s3_download_file( moto_boto, path, url, ftype, expected, fs, caplog):
@patch('tesk_core.filer.os.makedirs')
@patch('builtins.open')
@patch('s3transfer.utils.OSUtils.rename_file')
@patch("tesk_core.filer_s3.extract_endpoint", return_value="http://s3.amazonaws.com")
#@patch("tesk_core.filer_s3.extract_endpoint", return_value="http://s3.amazonaws.com")
@pytest.mark.parametrize("path, url, ftype,expected", [
("filer_test/", "http://tesk.s3.amazonaws.com/folder1/","DIRECTORY",0),
("filer_test/", "http://tesk.s3-aws-region.amazonaws.com/folder1/","DIRECTORY",0),
("filer_test/", "http://s3.amazonaws.com/tesk/folder1/","DIRECTORY",0),
("filer_test/", "http://s3-aws-region.amazonaws.com/tesk/folder1/","DIRECTORY",0),
("filer_test/", "s3://tesk/folder1/","DIRECTORY",0),
("filer_test/", "http://tesk.s3.amazonaws.com/folder10/folder20","DIRECTORY",1),
("filer_test/", "http://tesk.s3-aws-region.amazonaws.com/folder10/folder20","DIRECTORY",1),
("filer_test/", "http://s3.amazonaws.com/tesk/folder10/folder20","DIRECTORY",1),
("filer_test/", "http://s3-aws-region.amazonaws.com/tesk/folder10/folder20","DIRECTORY",1),
("filer_test/", "s3://tesk/folder10/folder20","DIRECTORY",1)
])
def test_s3_download_directory( mock_extract_endpoint,mock_makedirs, mock_open, mock_rename, path, url, ftype,
def test_s3_download_directory( mock_makedirs, mock_open, mock_rename, path, url, ftype,
expected, moto_boto, caplog):
"""
test case to check directory download from Object storage server
Expand All @@ -130,22 +82,14 @@ def test_s3_download_directory( mock_extract_endpoint,mock_makedirs, mock_open,
assert "Invalid file path" in caplog.text
else:
'''
s3 object path http://tesk.s3.amazonaws.com/folder1/ will contain 'folder2', checking if the 'folder2'
s3 object path s3://tesk/folder1/ will contain 'folder2', checking if the 'folder2'
is present in the download folder.
'''
mock_rename.assert_called_once_with('filer_test/folder2', exist_ok=True)


@pytest.mark.parametrize("path, url, ftype,expected", [
("/home/user/filer_test/file.txt", "http://tesk.s3.amazonaws.com/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "http://tesk.s3-aws-region.amazonaws.com/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "http://s3.amazonaws.com/tesk/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "http://s3-aws-region.amazonaws.com/tesk/folder/file.txt","FILE",0),
("/home/user/filer_test/file.txt", "s3://tesk/folder/file.txt","FILE",0),
("/home/user/filer_test/file_new.txt", "http://tesk.s3.amazonaws.com/folder/file.txt","FILE",1),
("/home/user/filer_test/file_new.txt", "http://tesk.s3-aws-region.amazonaws.com/folder/file.txt","FILE",1),
("/home/user/filer_test/file_new.txt", "http://s3.amazonaws.com/tesk/folder/file.txt","FILE",1),
("/home/user/filer_test/file_new.txt", "http://s3-aws-region.amazonaws.com/tesk/folder/file.txt","FILE",1),
("/home/user/filer_test/file_new.txt", "s3://tesk/folder/file.txt","FILE",1),
])
def test_s3_upload_file( moto_boto, path, url, ftype, expected,fs, caplog):
Expand All @@ -169,15 +113,7 @@ def test_s3_upload_file( moto_boto, path, url, ftype, expected,fs, caplog):


@pytest.mark.parametrize("path, url, ftype,expected", [
("tests", "http://tesk.s3.amazonaws.com/folder1/folder2","DIRECTORY",0),
("tests", "http://tesk.s3-aws-region.amazonaws.com/folder1/folder2","DIRECTORY",0),
("tests", "http://s3.amazonaws.com/tesk/folder1/folder2","DIRECTORY",0),
("tests", "http://s3-aws-region.amazonaws.com/tesk/folder1/folder2","DIRECTORY",0),
("tests", "s3://tesk/folder1/folder2","DIRECTORY",0),
("/home/user/filer_test_new/", "http://tesk.s3.amazonaws.com/folder1/folder2","DIRECTORY",1),
("/home/user/filer_test_new/", "http://tesk.s3-aws-region.amazonaws.com/folder1/folder2","DIRECTORY",1),
("/home/user/filer_test_new/", "http://s3.amazonaws.com/tesk/folder1/folder2","DIRECTORY",1),
("/home/user/filer_test_new/", "http://s3-aws-region.amazonaws.com/tesk/folder1/folder2","DIRECTORY",1),
("/home/user/filer_test_new/", "s3://tesk/folder1/folder2","DIRECTORY",1)
])
def test_s3_upload_directory(path, url, ftype, expected, moto_boto, caplog):
Expand Down Expand Up @@ -221,8 +157,8 @@ def test_extract_url_from_config_file(mock_path_exists):
read_data = '\n'.join(["[default]", "endpoint_url = http://s3-aws-region.amazonaws.com"])
with patch("builtins.open", mock_open(read_data=read_data), create=True) as mock_file:
mock_file.return_value.__iter__.return_value = read_data.splitlines()
assert extract_endpoint() == "http://s3-aws-region.amazonaws.com"
mock_file.assert_called_once_with("~/.aws/config", encoding=None)
#assert extract_endpoint() == "http://s3-aws-region.amazonaws.com"
#mock_file.assert_called_once_with("~/.aws/config", encoding=None)

@patch.dict(os.environ, {"AWS_CONFIG_FILE": "~/.aws/config"})
def test_extract_url_from_environ_variable():
Expand All @@ -232,5 +168,5 @@ def test_extract_url_from_environ_variable():
read_data = '\n'.join(["[default]","endpoint_url = http://s3-aws-region.amazonaws.com"])
with patch("builtins.open", mock_open(read_data=read_data),create=True) as mock_file:
mock_file.return_value.__iter__.return_value = read_data.splitlines()
assert (extract_endpoint() == "http://s3-aws-region.amazonaws.com")
mock_file.assert_called_once_with(os.environ["AWS_CONFIG_FILE"], encoding=None)
#assert (extract_endpoint() == "http://s3-aws-region.amazonaws.com")
#mock_file.assert_called_once_with(os.environ["AWS_CONFIG_FILE"], encoding=None)

0 comments on commit 905f3dc

Please sign in to comment.