Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions ocaml/tests/dune
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
test_vm_placement test_vm_helpers test_repository test_repository_helpers
test_ref
test_livepatch test_rpm test_updateinfo test_storage_smapiv1_wrapper test_storage_quicktest test_observer
test_pool_periodic_update_sync))
test_pool_periodic_update_sync test_pkg_mgr))
(libraries
alcotest
angstrom
Expand Down Expand Up @@ -60,13 +60,13 @@
(tests
(names test_vm_helpers test_vm_placement test_network_sriov test_vdi_cbt
test_clustering test_pusb test_daemon_manager test_repository test_repository_helpers
test_livepatch test_rpm test_updateinfo test_pool_periodic_update_sync)
test_livepatch test_rpm test_updateinfo test_pool_periodic_update_sync test_pkg_mgr)
(package xapi)
(modes exe)
(modules test_vm_helpers test_vm_placement test_network_sriov test_vdi_cbt
test_event test_clustering test_cluster_host test_cluster test_pusb
test_daemon_manager test_repository test_repository_helpers test_livepatch test_rpm
test_updateinfo test_pool_periodic_update_sync)
test_updateinfo test_pool_periodic_update_sync test_pkg_mgr)
(libraries
alcotest
fmt
Expand Down
330 changes: 330 additions & 0 deletions ocaml/tests/test_pkg_mgr.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,330 @@
open Pkg_mgr

let format_cmd cmd_line' =
let {cmd; params} = cmd_line' in
Printf.sprintf "%s:%s" cmd (String.concat " " params)

let check exp ac () =
let exp_str = format_cmd exp in
let ac_str = ac |> format_cmd in
let msg = Printf.sprintf "%s -- %s" exp_str ac_str in
Alcotest.(check string) msg exp_str ac_str

let test_dnf_repo_query_installed =
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.dnf_cmd
; params=
[
"repoquery"
; "-a"
; "--qf"
; "%{name}:|%{epoch}:|%{version}:|%{release}:|%{arch}:|%{repoid}"
; "--installed"
]
}
(Pkg_mgr.Dnf_cmd.repoquery_installed ())
)
]

let test_dnf_repo_query_updates =
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.dnf_cmd
; params=
[
"repoquery"
; "-a"
; "--disablerepo=*"
; "--enablerepo=testrepo1,testrepo2"
; "--qf"
; "%{name}:|%{epoch}:|%{version}:|%{release}:|%{arch}:|%{repoid}"
; "--upgrades"
]
}
(Pkg_mgr.Dnf_cmd.repoquery_updates
~repositories:["testrepo1"; "testrepo2"]
)
)
]

let test_dnf_clean_all_cache =
[
( "<null>"
, `Quick
, check
{cmd= !Xapi_globs.dnf_cmd; params= ["clean"; "all"]}
(Pkg_mgr.Dnf_cmd.clean_cache ~repo_name:"*")
)
]

let test_dnf_clean_repo_cache =
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.dnf_cmd
; params= ["--disablerepo=*"; "--enablerepo=test_repo"; "clean"; "all"]
}
(Pkg_mgr.Dnf_cmd.clean_cache ~repo_name:"test_repo")
)
]

let test_dnf_get_pkgs_from_updateinfo =
let sub_command = "upgrades" in
let repositories = ["testrepo1"; "testrepo2"] in
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.dnf_cmd
; params=
[
"-q"
; "--disablerepo=*"
; "--enablerepo=testrepo1,testrepo2"
; "updateinfo"
; "list"
; "upgrades"
]
}
(Pkg_mgr.Dnf_cmd.get_pkgs_from_updateinfo ~sub_command ~repositories)
)
]

let test_dnf_config_repo =
let config = ["--setopt=testrepo.accesstoken=file:///some/path"] in
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.dnf_cmd
; params=
[
"config-manager"
; "--setopt=testrepo.accesstoken=file:///some/path"
; "testrepo"
]
}
(Pkg_mgr.Dnf_cmd.config_repo ~repo_name:"testrepo" ~config)
)
]

let test_dnf_sync_repo =
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.dnf_cmd
; params=
[
"reposync"
; "-p"
; !Xapi_globs.local_pool_repo_dir
; "--downloadcomps"
; "--download-metadata"
; "--delete"
; "--newest-only"
; "--repoid=testrepo"
]
}
(Pkg_mgr.Dnf_cmd.sync_repo ~repo_name:"testrepo")
)
]

let test_dnf_apply_upgrades =
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.dnf_cmd
; params=
[
"-y"
; "--disablerepo=*"
; "--enablerepo=testrepo1,testrepo2"
; "upgrade"
]
}
(Pkg_mgr.Dnf_cmd.apply_upgrade ~repositories:["testrepo1"; "testrepo2"])
)
]

let test_yum_repo_query_installed =
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.repoquery_cmd
; params=
[
"-a"
; "--pkgnarrow=installed"
; "--qf"
; "%{name}:|%{epoch}:|%{version}:|%{release}:|%{arch}:|%{repoid}"
]
}
(Pkg_mgr.Yum_cmd.repoquery_installed ())
)
]

let test_yum_clean_all_cache =
[
( "<null>"
, `Quick
, check
{cmd= !Xapi_globs.yum_cmd; params= ["clean"; "all"]}
(Pkg_mgr.Yum_cmd.clean_cache ~repo_name:"*")
)
]

let test_yum_clean_repo_cache =
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.yum_cmd
; params= ["--disablerepo=*"; "--enablerepo=test_repo"; "clean"; "all"]
}
(Pkg_mgr.Yum_cmd.clean_cache ~repo_name:"test_repo")
)
]

let test_yum_get_pkgs_from_updateinfo =
let sub_command = "updates" in
let repositories = ["testrepo1"; "testrepo2"] in
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.yum_cmd
; params=
[
"-q"
; "--disablerepo=*"
; "--enablerepo=testrepo1,testrepo2"
; "updateinfo"
; "list"
; "updates"
]
}
(Pkg_mgr.Yum_cmd.get_pkgs_from_updateinfo ~sub_command ~repositories)
)
]

let test_yum_config_repo =
let config = ["--setopt=testrepo.accesstoken=file:///some/path"] in
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.yum_config_manager_cmd
; params=
["--setopt=testrepo.accesstoken=file:///some/path"; "testrepo"]
}
(Pkg_mgr.Yum_cmd.config_repo ~repo_name:"testrepo" ~config)
)
]

let test_yum_sync_repo =
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.reposync_cmd
; params=
[
"-p"
; !Xapi_globs.local_pool_repo_dir
; "--downloadcomps"
; "--download-metadata"
; "--delete"
; "--newest-only"
; "--repoid=testrepo"
; "--plugins"
]
}
(Pkg_mgr.Yum_cmd.sync_repo ~repo_name:"testrepo")
)
]

let test_yum_apply_upgrades =
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.yum_cmd
; params=
[
"-y"
; "--disablerepo=*"
; "--enablerepo=testrepo1,testrepo2"
; "upgrade"
]
}
(Pkg_mgr.Yum_cmd.apply_upgrade ~repositories:["testrepo1"; "testrepo2"])
)
]

let test_yum_repo_query_updates =
[
( "<null>"
, `Quick
, check
{
cmd= !Xapi_globs.repoquery_cmd
; params=
[
"-a"
; "--disablerepo=*"
; "--enablerepo=testrepo1,testrepo2"
; "--qf"
; "%{name}:|%{epoch}:|%{version}:|%{release}:|%{arch}:|%{repoid}"
; "--pkgnarrow updates"
; "--plugins"
]
}
(Pkg_mgr.Yum_cmd.repoquery_updates
~repositories:["testrepo1"; "testrepo2"]
)
)
]

let tests =
[
("test_dnf_repo_query_installed", test_dnf_repo_query_installed)
; ("test_dnf_repo_query_updates", test_dnf_repo_query_updates)
; ("test_dnf_clean_all_cache", test_dnf_clean_all_cache)
; ("test_dnf_clean_repo_cache", test_dnf_clean_repo_cache)
; ("test_dnf_get_pkgs_from_updateinfo", test_dnf_get_pkgs_from_updateinfo)
; ("test_dnf_cofig_repo", test_dnf_config_repo)
; ("test_dnf_sync_repo", test_dnf_sync_repo)
; ("test_dnf_apply_upgrades", test_dnf_apply_upgrades)
; ("test_yum_repo_query_installed", test_yum_repo_query_installed)
; ("test_yum_clean_all_cache", test_yum_clean_all_cache)
; ("test_yum_clean_repo_cache", test_yum_clean_repo_cache)
; ("test_yum_get_pkgs_from_updateinfo", test_yum_get_pkgs_from_updateinfo)
; ("test_yum_cofig_repo", test_yum_config_repo)
; ("test_yum_sync_repo", test_yum_sync_repo)
; ("test_yum_apply_upgrades", test_yum_apply_upgrades)
; ("test_yum_repo_query_updates", test_yum_repo_query_updates)
]

let () = Alcotest.run "Pkg_mgr suite" tests
Loading