From Fedora Project Wiki
 
Line 1: Line 1:
 
{{QA/Test_Case
 
{{QA/Test_Case
 
|description=This testcase ensures it's possible to use package layering features of rpm-ostree
 
|description=This testcase ensures it's possible to use package layering features of rpm-ostree
{{Admon/note|Prerequisite|This testcase assumes you have already run the [https://fedoraproject.org/wiki/User:Roshi/QA/AtomicTests/Atomic_Image_Boots boot testcase].}}
 
 
|setup=
 
|setup=
 
# Ensure you have a booted Fedora IoT image
 
# Ensure you have a booted Fedora IoT image

Latest revision as of 18:38, 14 April 2020

Description

This testcase ensures it's possible to use package layering features of rpm-ostree

Setup

  1. Ensure you have a booted Fedora IoT image

How to test

  1. Install the 'wget' package
# rpm-ostree install wget
Checking out tree 7130f87... done
...
Resolving dependencies... done
Will download: 1 package (815.9?kB)
Downloading from 'updates-testing'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Added:
  wget-1.20.3-4.fc32.x86_64
Run "systemctl reboot" to start a reboot

  1. Reboot the system
  2. Verify that the 'wget' package is layered succesfully and usable
 rpm-ostree status                               
* ostree://fedora-iot:fedora/devel/x86_64/iot
                   Version: 32.20200408.0 (2020-04-08T11:07:02Z)
                BaseCommit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990
              GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
           LayeredPackages: wget

  ostree://fedora-iot:fedora/devel/x86_64/iot
                   Version: 32.20200408.0 (2020-04-08T11:07:02Z)
                    Commit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990
              GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

# rpm -q wget                        
wget-1.20.3-4.fc32.x86_64
# wget --version
GNU Wget 1.20.3 built on linux-gnu.

-cares +digest +gpgme +https +ipv6 +iri +large-file +metalink +nls 
+ntlm +opie +psl +ssl/gnutls 
...

  1. Install 'httpd' which pulls in multiple dependencies
# rpm-ostree install httpd
Checking out tree 7130f87... done
...
Downloading from 'fedora'... done
Downloading from 'updates-testing'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Added:
  apr-1.7.0-3.fc32.x86_64
  apr-util-1.6.1-12.fc32.x86_64
  apr-util-bdb-1.6.1-12.fc32.x86_64
  apr-util-openssl-1.6.1-12.fc32.x86_64
  fedora-logos-httpd-30.0.2-4.fc32.noarch
  httpd-2.4.43-1.fc32.x86_64
  httpd-filesystem-2.4.43-1.fc32.noarch
  httpd-tools-2.4.43-1.fc32.x86_64
  mailcap-2.1.48-7.fc32.noarch
  mod_http2-1.15.5-1.fc32.x86_64
Run "systemctl reboot" to start a reboot

  1. Reboot host
  2. Verify that 'wget' is still layered and 'httpd' is also layered with dependencies
# rpm-ostree status
State: idle
AutomaticUpdates: disabled
Deployments:
* ostree://fedora-iot:fedora/devel/x86_64/iot
                   Version: 32.20200408.0 (2020-04-08T11:07:02Z)
                BaseCommit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990
              GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
           LayeredPackages: httpd wget

  ostree://fedora-iot:fedora/devel/x86_64/iot
                   Version: 32.20200408.0 (2020-04-08T11:07:02Z)
                BaseCommit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990
              GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
           LayeredPackages: wget
# rpm -q wget
wget-1.20.3-4.fc32.x86_64
# rpm -q httpd
httpd-2.4.43-1.fc32.x86_64
# rpm -q apr
apr-1.7.0-3.fc32.x86_64

  1. Verify that you can start the 'httpd' service and connect to the server
# systemctl start httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
     Active: active (running) since Wed 2020-04-08 15:36:17 CDT; 4s ago
       Docs: man:httpd.service(8)
   Main PID: 2333 (httpd)
     Status: "Processing requests..."
      Tasks: 213 (limit: 9245)
     Memory: 20.1M
        CPU: 172ms
     CGroup: /system.slice/httpd.service
             ├─2333 /usr/sbin/httpd -DFOREGROUND
             ├─2334 /usr/sbin/httpd -DFOREGROUND
             ├─2335 /usr/sbin/httpd -DFOREGROUND
             ├─2336 /usr/sbin/httpd -DFOREGROUND
             └─2337 /usr/sbin/httpd -DFOREGROUND

Apr 08 15:36:17 fitlet2 systemd[1]: Starting The Apache HTTP Server...
Apr 08 15:36:17 fitlet2 httpd[2333]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 19>
Apr 08 15:36:17 fitlet2 systemd[1]: Started The Apache HTTP Server.


# curl http://localhost                                                  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">        
                                                                       
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">                                                                                                                                                
        <head>                                   
                <title>Test Page for the Apache HTTP Server on Fedora</title>                                                                                                                                                      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />              
...

Enable the httpd service to start at boot and reboot the system.

systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
systemctl reboot

Log back into the system and make sure the httpd service is running.

systemctl status httpd

● httpd.service - The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
    Active: active (running) since Wed 2020-04-08 15:39:44 CDT; 5s ago
      Docs: man:httpd.service(8)
  Main PID: 1251 (httpd)
    Status: "Processing requests..."
     Tasks: 213 (limit: 9245)

...

  1. Uninstall 'wget' and 'httpd'
# rpm-ostree uninstall wget httpd
Staging deployment... done
Removed:
  apr-1.7.0-3.fc32.x86_64
  apr-util-1.6.1-12.fc32.x86_64
  apr-util-bdb-1.6.1-12.fc32.x86_64
  apr-util-openssl-1.6.1-12.fc32.x86_64
  fedora-logos-httpd-30.0.2-4.fc32.noarch
  httpd-2.4.43-1.fc32.x86_64
  httpd-filesystem-2.4.43-1.fc32.noarch
  httpd-tools-2.4.43-1.fc32.x86_64
  mailcap-2.1.48-7.fc32.noarch
  mod_http2-1.15.5-1.fc32.x86_64
  wget-1.20.3-4.fc32.x86_64
Run "systemctl reboot" to start a reboot

  1. Reboot host
  2. Verify that 'wget' and 'httpd' are no longer layered and cannot be used
# rpm-ostree status
State: idle
AutomaticUpdates: disabled
Deployments:
* ostree://fedora-iot:fedora/devel/x86_64/iot
                   Version: 32.20200408.0 (2020-04-08T11:07:02Z)
                    Commit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990
              GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

  ostree://fedora-iot:fedora/devel/x86_64/iot
                   Version: 32.20200408.0 (2020-04-08T11:07:02Z)
                BaseCommit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990
              GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
           LayeredPackages: httpd wget
# rpm -q wget 
package wget is not installed
# rpm -q httpd
package httpd is not installed
# wget --version
bash: wget: command not found
# systemctl status httpd
Unit httpd.service could not be found.

Expected Results

  1. Verify that all layering operations were successful