pipelines/sdk/python/kfp/components/utils_test.py

126 lines
3.6 KiB
Python

# Copyright 2020 The Kubeflow Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Tests for kfp.components.utils."""
import unittest
from absl.testing import parameterized
from kfp.components import utils
class UtilsTest(parameterized.TestCase):
@parameterized.parameters(
{
'original': 'name',
'expected': 'name',
},
{
'original': ' Some name',
'expected': 'some-name',
},
{
'original': 'name_123*',
'expected': 'name-123',
},
)
def test_maybe_rename_for_k8s(self, original, expected):
self.assertEqual(utils.maybe_rename_for_k8s(original), expected)
def test_sanitize_component_name(self):
self.assertEqual('comp-my-component',
utils.sanitize_component_name('My component'))
def test_sanitize_executor_label(self):
self.assertEqual('exec-my-component',
utils.sanitize_executor_label('My component'))
def test_sanitize_task_name(self):
self.assertEqual('my-component-1',
utils.sanitize_task_name('My component 1'))
@parameterized.parameters(
{
'name': 'some-name',
'collection': [],
'delimiter': '-',
'expected': 'some-name'
},
{
'name': 'some-name',
'collection': ['some-name'],
'delimiter': '+',
'expected': 'some-name+2'
},
{
'name': 'some-name',
'collection': ['some-name', 'some-name-2'],
'delimiter': '-',
'expected': 'some-name-3'
},
{
'name': 'some-name-2',
'collection': ['some-name', 'some-name-2'],
'delimiter': '-',
'expected': 'some-name-2-2'
},
)
def test_make_name_unique_by_adding_index(self, name, collection, delimiter,
expected):
self.assertEqual(
expected,
utils.make_name_unique_by_adding_index(
name=name,
collection=collection,
delimiter=delimiter,
))
@parameterized.parameters(
{
'pipeline_name': 'my-pipeline',
'is_valid': True,
},
{
'pipeline_name': 'p' * 128,
'is_valid': True,
},
{
'pipeline_name': 'p' * 129,
'is_valid': False,
},
{
'pipeline_name': 'my_pipeline',
'is_valid': False,
},
{
'pipeline_name': '-my-pipeline',
'is_valid': False,
},
{
'pipeline_name': 'My pipeline',
'is_valid': False,
},
)
def test(self, pipeline_name, is_valid):
if is_valid:
utils.validate_pipeline_name(pipeline_name)
else:
with self.assertRaisesRegex(ValueError, 'Invalid pipeline name: '):
utils.validate_pipeline_name('my_pipeline')
if __name__ == '__main__':
unittest.main()