t_pkg_api_hydrate.py revision 3339
5f5870385cff47efd2f58e7892f251cf13761528Timo Sirainen#!/usr/bin/python
4cb2599c5cdf27362a66ac475ce295409c093c92Timo Sirainen#
4cb2599c5cdf27362a66ac475ce295409c093c92Timo Sirainen# CDDL HEADER START
3e859421cc59d28d4ba99f32830e3d0531334813Timo Sirainen#
1036d2db2b718bdc5b10f0773dd01d62638e9ba9Timo Sirainen# The contents of this file are subject to the terms of the
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen# Common Development and Distribution License (the "License").
1036d2db2b718bdc5b10f0773dd01d62638e9ba9Timo Sirainen# You may not use this file except in compliance with the License.
927d3977d5598f12ae18d4fa3f22b9e913f7dd46Timo Sirainen#
4cb2599c5cdf27362a66ac475ce295409c093c92Timo Sirainen# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3b94ff5951db4d4eddb7a80ed4e3f61207202635Timo Sirainen# or http://www.opensolaris.org/os/licensing.
4cb2599c5cdf27362a66ac475ce295409c093c92Timo Sirainen# See the License for the specific language governing permissions
4cb2599c5cdf27362a66ac475ce295409c093c92Timo Sirainen# and limitations under the License.
7cd08c67fde5371f662d8c95b30c341741950420Timo Sirainen#
d758298b3b6f1ebcd494392c0f20b0e119a9e85eTimo Sirainen# When distributing Covered Code, include this CDDL HEADER in each
546d3609e0811a147269ee9979eb90649445f5acTimo Sirainen# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7cd08c67fde5371f662d8c95b30c341741950420Timo Sirainen# If applicable, add the following below this CDDL HEADER, with the
f77ffa31038d46ca9c6d24d93e3d76c9aa8d4d0cTimo Sirainen# fields enclosed by brackets "[]" replaced with your own identifying
f77ffa31038d46ca9c6d24d93e3d76c9aa8d4d0cTimo Sirainen# information: Portions Copyright [yyyy] [name of copyright owner]
f77ffa31038d46ca9c6d24d93e3d76c9aa8d4d0cTimo Sirainen#
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen# CDDL HEADER END
a40649829bce4c8de6210a2cb4a4b4cf5bb40da8Timo Sirainen#
a40649829bce4c8de6210a2cb4a4b4cf5bb40da8Timo Sirainen
d35364f4d7d139b4150d290e14717e10f1ede4cdTimo Sirainen#
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen#
3b94ff5951db4d4eddb7a80ed4e3f61207202635Timo Sirainen
3b94ff5951db4d4eddb7a80ed4e3f61207202635Timo Sirainenfrom . import testutils
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainenif __name__ == "__main__":
3b94ff5951db4d4eddb7a80ed4e3f61207202635Timo Sirainen testutils.setup_environment("../../../proto")
3b94ff5951db4d4eddb7a80ed4e3f61207202635Timo Sirainenimport pkg5unittest
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen
43d32cbe60fdaef2699d99f1ca259053e9350411Timo Sirainenimport pkg.client.api_errors as api_errors
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainenclass TestPkgApiHydrate(pkg5unittest.SingleDepotTestCase):
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen dev10 = """
43d32cbe60fdaef2699d99f1ca259053e9350411Timo Sirainen open dev@1.0,5.11-0
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen add dir mode=0755 owner=root group=bin path=dev
cd700cc7be045389dd1c948b2372b30ee99c5795Timo Sirainen add dir mode=0755 owner=root group=bin path=dev/cfg
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen add file dev/cfg/bar path=dev/cfg/bar mode=0644 owner=root group=bin preserve=true
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen add file dev/cfg/bar1 path=dev/cfg/bar1 mode=0555 owner=root group=bin
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen add file dev/cfg/bar2 path=dev/cfg/bar2 mode=0644 owner=root group=bin overlay=true
43d32cbe60fdaef2699d99f1ca259053e9350411Timo Sirainen add hardlink path=dev/cfg/bar2.hlink target=bar2
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen close
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen """
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen misc_files = ["dev/cfg/bar", "dev/cfg/bar1", "dev/cfg/bar2",
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen "dev/cfg/bar2.hlink"]
43d32cbe60fdaef2699d99f1ca259053e9350411Timo Sirainen
7cd08c67fde5371f662d8c95b30c341741950420Timo Sirainen def setUp(self):
7cd08c67fde5371f662d8c95b30c341741950420Timo Sirainen pkg5unittest.SingleDepotTestCase.setUp(self)
7cd08c67fde5371f662d8c95b30c341741950420Timo Sirainen self.make_misc_files(self.misc_files)
7cd08c67fde5371f662d8c95b30c341741950420Timo Sirainen self.pkgsend_bulk(self.rurl, self.dev10)
7cd08c67fde5371f662d8c95b30c341741950420Timo Sirainen
7cd08c67fde5371f662d8c95b30c341741950420Timo Sirainen def test_01_basic(self):
7cd08c67fde5371f662d8c95b30c341741950420Timo Sirainen api_inst = self.image_create(self.rurl)
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen self._api_install(api_inst, ["dev"])
43d32cbe60fdaef2699d99f1ca259053e9350411Timo Sirainen
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen self._api_dehydrate(api_inst)
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen # Verify that files are deleted or remained as expected.
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen self.file_exists("dev/cfg/bar")
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen self.file_doesnt_exist("dev/cfg/bar1")
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen self.file_exists("dev/cfg/bar2")
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen self.file_doesnt_exist("dev/cfg/bar2.hlink")
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen self._api_rehydrate(api_inst)
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen self.pkg("verify")
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen
8e0f89885f2ce60961da9ae2d96d71c7109e6032Timo Sirainen def test_bad_publishers(self):
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen api_inst = self.image_create(self.rurl)
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen self._api_install(api_inst, ["dev"])
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen # Test that dehydrate will raise a PlanCreationException when
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen # encountering bad publishers.
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen self.assertRaises(api_errors.PlanCreationException,
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen lambda *args, **kwargs: list(
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen api_inst.gen_plan_dehydrate(*args, **kwargs)),
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen ["-p nosuch", "-p unknown", "-p test"])
869b0fa6ef7fc0326c9f75ae449e5a9f97a796e2Timo Sirainen
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen # Test that rehydrate will raise a PlanCreationException when
a40649829bce4c8de6210a2cb4a4b4cf5bb40da8Timo Sirainen # encountering bad publishers.
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen self.assertRaises(api_errors.PlanCreationException,
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen lambda *args, **kwargs: list(
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen api_inst.gen_plan_rehydrate(*args, **kwargs)),
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen ["-p nosuch", "-p unknown", "-p test"])
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen
bb979386852c7689dc66c0fce03319382f66d501Timo Sirainen
546d3609e0811a147269ee9979eb90649445f5acTimo Sirainenif __name__ == "__main__":
546d3609e0811a147269ee9979eb90649445f5acTimo Sirainen unittest.main()
1036d2db2b718bdc5b10f0773dd01d62638e9ba9Timo Sirainen