From b82a984ab1a85efac2732bc1c494ed7d3b0ba9b5 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Wed, 7 Jun 2023 10:54:19 -0500 Subject: [PATCH] Make package installable/testable on clean docker image --- Makefile | 3 +++ Project.toml | 1 - deps/build.jl | 2 +- src/Cuts/Cuts.jl | 2 +- test/Project.toml | 1 - test/docker/Dockerfile | 3 +++ test/docker/run.jl | 6 ++++++ test/fixtures/bell5.h5 | Bin 86737 -> 89018 bytes test/src/BB/test_bb.jl | 4 ++-- test/src/MIPLearnT.jl | 2 +- test/src/test_usage.jl | 4 ++-- 11 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 Makefile create mode 100644 test/docker/Dockerfile create mode 100644 test/docker/run.jl diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4344fe3 --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +install-test: + docker build -t miplearnjl-test -f test/docker/Dockerfile . + docker run --rm -it miplearnjl-test \ No newline at end of file diff --git a/Project.toml b/Project.toml index 4a70a9e..0041b21 100644 --- a/Project.toml +++ b/Project.toml @@ -4,7 +4,6 @@ authors = ["Alinson S Xavier "] version = "0.3.0" [deps] -CPLEX = "a076750e-1247-5638-91d2-ce28b192dca0" Conda = "8f4d0f93-b110-5947-807f-2305c1781a2d" DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" diff --git a/deps/build.jl b/deps/build.jl index cb0f016..cdc304c 100644 --- a/deps/build.jl +++ b/deps/build.jl @@ -5,7 +5,7 @@ function install_miplearn() Conda.update() pip = joinpath(dirname(pyimport("sys").executable), "pip") isfile(pip) || error("$pip: invalid path") - run(`$pip install miplearn==0.3.0.dev0`) + run(`$pip install miplearn==0.3.0.dev1`) end install_miplearn() diff --git a/src/Cuts/Cuts.jl b/src/Cuts/Cuts.jl index 3684a19..5b2da5c 100644 --- a/src/Cuts/Cuts.jl +++ b/src/Cuts/Cuts.jl @@ -8,7 +8,7 @@ import ..to_str_array include("tableau/structs.jl") -include("blackbox/cplex.jl") +# include("blackbox/cplex.jl") include("tableau/collect.jl") include("tableau/gmi.jl") include("tableau/moi.jl") diff --git a/test/Project.toml b/test/Project.toml index f0fecf8..99fa175 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -4,7 +4,6 @@ authors = ["Alinson S. Xavier "] version = "0.1.0" [deps] -CPLEX = "a076750e-1247-5638-91d2-ce28b192dca0" Clp = "e2554f3b-3117-50c0-817c-e040a3ddf72d" Glob = "c27321d9-0574-5035-807b-f59d2c89b15c" HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" diff --git a/test/docker/Dockerfile b/test/docker/Dockerfile new file mode 100644 index 0000000..55d7730 --- /dev/null +++ b/test/docker/Dockerfile @@ -0,0 +1,3 @@ +FROM julia:1.9-buster +ADD . /app +CMD julia --project=/app/test /app/test/docker/run.jl \ No newline at end of file diff --git a/test/docker/run.jl b/test/docker/run.jl new file mode 100644 index 0000000..a95aa04 --- /dev/null +++ b/test/docker/run.jl @@ -0,0 +1,6 @@ +using Pkg +Pkg.develop(path="/app") +Pkg.build("MIPLearn") + +using MIPLearnT +runtests() diff --git a/test/fixtures/bell5.h5 b/test/fixtures/bell5.h5 index 8472b975761b7b01a9dc2dde2a2a07f75b239cac..13afc24a7787d3449b0a7ded6562d62a2c097ee9 100644 GIT binary patch delta 2306 zcmcJLcTkhr8piX5BqB&h10+;Y1X&FrARsZQs31)&h$v;iSXM&`p@b4aij+(HE*nB` z0yfZ%nvj5WDG~tzT}nU!`Ibcjh;${3ZSKz8GWVZ7f1GE|%=3HR^SoWRkQ^2=1-p&o z0>Hi;+}9fh8@JrLY=88SBV5h4__~+O=oXK4O|=L|h^I~!fq7zj4?ikKN!|MH{vt#x z0DL2whdAk!X9dUvSNJe4YP+qkhDER}`2cYJ^dS z!4Pn`2mqlFfaivP1v{Mtz%Y#@WgC6+k^lao6j8h^gaB5)E$SfE6bk3Kc_p+J)BGNHN5Z{+E--M zjqJu=Rer5Z4n4LhIMP7n66QeG`VOvDv9K>NeB@?tj4Bb}ge}~Bbrx0)^ zJw~?1%xT^gw|{~5*z6_>w(4Ne2FlV;vu@ylcVaY8_q`4sIK*rs!FjiTc4O5r=4c3R zyHW69mh^NgPh(O$xUF;U_~kfA!{WFn{~+nv@8j-G8=XlnpV|tv&>j9KhOR&{>QaqD z<6cglq}9xsM-9C6{qMM?#X>t)QE#M*Tz?5?+S%c49nK@yHy;8FR@A=U<%8)&aAv(n@}(&P3e6+gEL|Y@a`X-VlL1f%ksJdXG=2 zP+1IEdp2@Ew5J|oBxQDBf}MsLWSUawuNhh^x=Vre&%F~KNO6WJZS^W#;TGx{`?KTA z^?A?bG#Ad07+j~Ye_vyeYqTSf)PNHmwNfvbT2Rs1CZyF}Wlolx+G-Vu$_yx^RrY-} zs_syZt7v#d6pve+KlD;xH}(R{|9OKSGxRL}ss?Q_S1@sH>K8Nbi`Qk5?&kT5wFGPT zu^VldA_C0jyTtijXfcq8ZF|t@N|&6t)YCejZzcZ@9841nC>2ex)tIfhDUbi?7Svw? zRk%;xAM`7)Iagjdv!8T%bNZ+YSNh(>PkUZRdqtzt?4JFDQrbC|W7wnDtRSj@J+^YK2{m_-wz%qZY9MoWyqy8}5u3NkYj?~04QOG= zc?lZCxRMJGkZQ?kodT=m#iML2KBz7F_2H=PErV|*^$oh;3?zw44CkmBwb)2Yz-el8 zgatC$<^!C8d?{`)UAREp{WeZ@A3*?Af?dz}o4t0mwDZVU_!gunc1WwFbh!bJ59nil z7fcb1y<-`?Roh`qUyjF`@f)H(4!e|GD{35ZDP;(HtrY4rfvgl6%dMGmc|)qZprV_| zJmp;L@#Oq+iE)d~FD$5by!;&P312xci?Curje4v?jcmVpwyI067+pN==4^aYRYau4 zHg@RREPR4;8V{7D^6H4Fqvq{cG%1*EV%an=kgiVg-(2E2C894^BKa)#w(Zg$@q1{* ziZVAe<+FsI$bp9XDaRFgA9h50=e=37uUtz^j5^|aqlcdw{?O9`*Hy%=EMptcnqkO{ zW{e`}BujuwCmaSGX@67S|F^Eo-_-X2eoCQv*ufFQoP-@bQJI;kt<>*d zSR0nK=>UP-dud0O2jfF&Wa_^{L5-vXBRQYDkF~#TGy2f-A3w1_Y}C4o!2TE z^Zq3B!lN28hi34QPv37VT1L=99}^0DvADXg!zBOmsYBgVyUsnVh9z{-|E=AW7Dp!O3W0yD+(GUOG{3tPP>HfBdaJm&Ig^|MCQ7gS$zHvSVTBe$ zOp$31SD{ssVqQk>R^I?uiJ{+|O)Ix%_g2*P6wPaAFjowBV5v4E!ggPowr*4Jbasn@ zkzYxpv)g6q{tNlTOKmZwtr_-abW(UAg)flwebu3ao!+uzwt*bW_%t@OW+kVGhT_@Y zAiLA#QJJ<3`IS)VWYi#iZ`N*!_&c<94U`bP*snI5&lZ%BY;9X*FMiIqSSo(K?ZrYO Xs;`LqG{Iy*N-64=F6$Tp$U*)I3`;xr delta 3090 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 1)) + # @time bb_run("CPLEX", optimizer_with_attributes(CPLEX.Optimizer, "CPXPARAM_Threads" => 1)) end diff --git a/test/src/MIPLearnT.jl b/test/src/MIPLearnT.jl index 6b95fcb..b14b883 100644 --- a/test/src/MIPLearnT.jl +++ b/test/src/MIPLearnT.jl @@ -27,7 +27,7 @@ function runtests() @testset "BB" begin test_bb() end - test_cuts_blackbox_cplex() + # test_cuts_blackbox_cplex() test_io() test_problems_setcover() test_solvers_jump() diff --git a/test/src/test_usage.jl b/test/src/test_usage.jl index 33e52b2..f02ff65 100644 --- a/test/src/test_usage.jl +++ b/test/src/test_usage.jl @@ -6,10 +6,10 @@ function test_usage() LogisticRegression = pyimport("sklearn.linear_model").LogisticRegression @debug "Generating data files..." - dirname = tempdir() + dirname = mktempdir() data = [fixture_setcover_data()] data_filenames = write_pkl_gz(data, dirname) - h5_filenames = ["$(f).h5" for f in data_filenames] + h5_filenames = [replace(f, ".pkl.gz" => ".h5") for f in data_filenames] @debug "Setting up LearningSolver..." solver = LearningSolver(