File 0708-ct-Store-correct-paths-with-from-release-in-ct_relea.patch of Package erlang

From 3a3d74963a8447a0aa7becddf85d4095dd00d4cd Mon Sep 17 00:00:00 2001
From: Siri Hansen <siri@erlang.org>
Date: Thu, 27 Jun 2019 17:11:48 +0200
Subject: [PATCH] [ct] Store correct paths with from-release in ct_release_test

In opaque data given to callback module, the paths to application lib
dirs were faulty for the release to upgrade from. This is now
corrected.
---
 lib/common_test/src/ct_release_test.erl            | 22 +++++++++++-----------
 .../release_test_SUITE.erl                         |  4 +++-
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/lib/common_test/src/ct_release_test.erl b/lib/common_test/src/ct_release_test.erl
index ac3dcab7c9..839fb300c7 100644
--- a/lib/common_test/src/ct_release_test.erl
+++ b/lib/common_test/src/ct_release_test.erl
@@ -475,7 +475,7 @@ fetch_all_apps(Node) ->
 		  A = list_to_atom(filename:basename(filename:rootname(F))),
 		  _ = rpc:call(Node,application,load,[A]),
 		  case rpc:call(Node,application,get_key,[A,vsn]) of
-		      {ok,V} -> [{A,V}];
+		      {ok,V} -> [{A,V,rpc:call(Node,code,lib_dir,[A])}];
 		      _ -> []
 		  end
 	  end,
@@ -517,7 +517,7 @@ upgrade(Apps,Level,Callback,CreateDir,InstallDir,Config) ->
 target_system(Apps,CreateDir,InstallDir,{FromVsn,_,AllAppsVsns,Path}) ->
     RelName0 = "otp-"++FromVsn,
 
-    AppsVsns = [{A,V} || {A,V} <- AllAppsVsns, lists:member(A,Apps)],
+    AppsVsns = [{A,V,D} || {A,V,D} <- AllAppsVsns, lists:member(A,Apps)],
     {RelName,ErtsVsn} = create_relfile(AppsVsns,CreateDir,RelName0,FromVsn),
 
     %% Create .script and .boot
@@ -636,8 +636,7 @@ do_upgrade({Cb,InitState},FromVsn,FromAppsVsns,ToRel,ToAppsVsns,InstallDir) ->
     {ok,Node} = start_node(Start,FromVsn,FromAppsVsns),
 
     ct:log("Node started: ~p",[Node]),
-    CtData = #ct_data{from = [{A,V,code:lib_dir(A)} || {A,V} <- FromAppsVsns],
-		      to=[{A,V,code:lib_dir(A)} || {A,V} <- ToAppsVsns]},
+    CtData = #ct_data{from = FromAppsVsns,to=ToAppsVsns},
     State1 = do_callback(Node,Cb,upgrade_init,[CtData,InitState]),
 
     [{"OTP upgrade test",FromVsn,_,permanent}] =
@@ -724,14 +723,14 @@ previous_major(Rel) ->
     integer_to_list(list_to_integer(Rel)-1).
 
 create_relfile(AppsVsns,CreateDir,RelName0,RelVsn) ->
-    UpgradeAppsVsns = [{A,V,restart_type(A)} || {A,V} <- AppsVsns],
+    UpgradeAppsVsns = [{A,V,restart_type(A)} || {A,V,_D} <- AppsVsns],
 
     CoreAppVsns0 = get_vsns([kernel,stdlib,sasl]),
     CoreAppVsns =
-	[{A,V,restart_type(A)} || {A,V} <- CoreAppVsns0,
+	[{A,V,restart_type(A)} || {A,V,_D} <- CoreAppVsns0,
 				  false == lists:keymember(A,1,AppsVsns)],
 
-    Apps = [App || {App,_} <- AppsVsns],
+    Apps = [App || {App,_,_} <- AppsVsns],
     StartDepsVsns = get_start_deps(Apps,CoreAppVsns),
     StartApps = [StartApp || {StartApp,_,_} <- StartDepsVsns] ++ Apps,
 
@@ -744,7 +743,7 @@ create_relfile(AppsVsns,CreateDir,RelName0,RelVsn) ->
     %% processes of these applications will not be running.
     TestToolAppsVsns0 = get_vsns([common_test]),
     TestToolAppsVsns =
-	[{A,V,none} || {A,V} <- TestToolAppsVsns0,
+	[{A,V,none} || {A,V,_D} <- TestToolAppsVsns0,
 		       false == lists:keymember(A,1,AllAppsVsns0)],
 
     AllAppsVsns1 = AllAppsVsns0 ++ TestToolAppsVsns,
@@ -766,7 +765,7 @@ get_vsns(Apps) ->
     [begin
 	 _ = application:load(A),
 	 {ok,V} = application:get_key(A,vsn),
-	 {A,V}
+	 {A,V,code:lib_dir(A)}
      end || A <- Apps].
 
 get_start_deps([App|Apps],Acc) ->
@@ -880,8 +879,9 @@ start_node(Start,ExpVsn,ExpAppsVsns) ->
     erlang:port_close(Port),
     wait_node_up(permanent,ExpVsn,ExpAppsVsns).
 
-wait_node_up(ExpStatus,ExpVsn,ExpAppsVsns) ->
+wait_node_up(ExpStatus,ExpVsn,ExpAppsVsns0) ->
     Node = node_name(?testnode),
+    ExpAppsVsns = [{A,V} || {A,V,_D} <- ExpAppsVsns0],
     wait_node_up(Node,ExpStatus,ExpVsn,lists:keysort(1,ExpAppsVsns),60).
 
 wait_node_up(Node,ExpStatus,ExpVsn,ExpAppsVsns,0) ->
@@ -893,7 +893,7 @@ wait_node_up(Node,ExpStatus,ExpVsn,ExpAppsVsns,N) ->
 	  rpc:call(Node, application, which_applications, [])} of
 	{[{_,ExpVsn,_,_}],Apps} when is_list(Apps) ->
 	    case [{A,V} || {A,_,V} <- lists:keysort(1,Apps),
-			   lists:keymember(A,1,ExpAppsVsns)] of
+                           lists:keymember(A,1,ExpAppsVsns)] of
 		ExpAppsVsns ->
 		    {ok,Node};
 		_ ->
diff --git a/lib/common_test/test/ct_release_test_SUITE_data/release_test_SUITE.erl b/lib/common_test/test/ct_release_test_SUITE_data/release_test_SUITE.erl
index 7f0ba65791..fe69ad0748 100644
--- a/lib/common_test/test/ct_release_test_SUITE_data/release_test_SUITE.erl
+++ b/lib/common_test/test/ct_release_test_SUITE_data/release_test_SUITE.erl
@@ -47,7 +47,9 @@ end_per_suite(_Config) ->
 init_per_testcase(major_fail_no_init, Config) ->
     Config;
 init_per_testcase(_Case, Config) ->
-    ct_release_test:init(Config).
+    Config1 = ct_release_test:init(Config),
+    ct:log("ct_release_test:init/1 returned:~n~p",[Config1]),
+    Config1.
 end_per_testcase(_Case, Config) ->
     ct_release_test:cleanup(Config).
 
-- 
2.16.4

openSUSE Build Service is sponsored by