#!/usr/bin/python3 -cimport os, sys; os.execv(os.path.dirname(sys.argv[1]) + "/../common/pywrap", sys.argv)

# This file is part of Cockpit.
#
# Copyright (C) 2015 Red Hat, Inc.
#
# Cockpit is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Cockpit is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Cockpit; If not, see <http://www.gnu.org/licenses/>.

import storagelib
import testlib


class TestStorageScaling(storagelib.StorageCase):

    def testScaling(self):
        m = self.machine
        b = self.browser

        self.login_and_go("/storage")

        def count_rows():
            return b.call_js_func('ph_count', self.card("Storage") + " tbody tr")

        b.wait_visible(self.card_row("Storage", name="/dev/vda"))
        # Wait on btrfs subvolumes on OS'es with the install on btrfs
        if m.image.startswith('fedora'):
            b.wait_in_text(self.card_row("Storage", name="root/var/lib/machines"), "btrfs subvolume")
        elif m.image == "arch":
            b.wait_in_text(self.card_row("Storage", name="swap"), "btrfs subvolume")
        n_rows = count_rows()

        m.execute("modprobe scsi_debug num_tgts=200")
        with b.wait_timeout(60):
            b.click(self.card_button("Storage", f"Show all {n_rows + 200} rows"))
            b.wait(lambda: count_rows() == n_rows + 200)


if __name__ == '__main__':
    testlib.test_main()
