Fix a use after free bug in the tests.
The way the SystemTest fixture works is that it takes
a "FooProblem" object as a type, which contains a ceres::Problem
and a ceres::Solver::Options object.
The Options object also contains a linear_solver_ordering which
contains double* which refer to memory that is allocated when
a problem object is created.
So it is important that the lifetime of the ceres::Problem object
and the ceres::Solver::Options object be tied together. But we were
violating this by creating a FooProblem object on the stack, grabbing
its Options struct and passing it to the SystemTest fixture, which
would then create another instance of FooProblem, grab its Problem
object and copy the modified options struct into it.
In the case where a user provided ordering was being used,
this ordering would now be referring to memory allocated by the first
FooProblem object, which would cause Ceres's internal ApplyOrdering
function to fail.
The fix is ofcourse to Problem and Options object that are born
together.
Change-Id: I07c377a9d5fcabbb6c7ca8aa3460206ce045ffa9
diff --git a/internal/ceres/generate_bundle_adjustment_tests.py b/internal/ceres/generate_bundle_adjustment_tests.py
index b36cf66..89cf8c7 100644
--- a/internal/ceres/generate_bundle_adjustment_tests.py
+++ b/internal/ceres/generate_bundle_adjustment_tests.py
@@ -121,15 +121,17 @@
TEST_F(BundleAdjustmentTest,
%(test_class_name)s) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = %(num_threads)s;
- options.linear_solver_type = %(linear_solver)s;
- options.sparse_linear_algebra_library_type = %(sparse_backend)s;
- options.preconditioner_type = %(preconditioner)s;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = %(num_threads)s;
+ options->linear_solver_type = %(linear_solver)s;
+ options->sparse_linear_algebra_library_type = %(sparse_backend)s;
+ options->preconditioner_type = %(preconditioner)s;
if (%(ordering)s) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc
index 2d3ea81..c6cbaa5 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc
@@ -42,15 +42,17 @@
TEST_F(BundleAdjustmentTest,
DenseSchur_AutomaticOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = DENSE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = DENSE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc
index 311bceb..bbbcbb6 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
DenseSchur_AutomaticOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = DENSE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = DENSE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc
index 930f5f0..48cd4c8 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc
@@ -42,15 +42,17 @@
TEST_F(BundleAdjustmentTest,
DenseSchur_UserOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = DENSE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = DENSE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc
index cf8139a..ec070bf 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
DenseSchur_UserOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = DENSE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = DENSE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc
index 8c3b886..5f36b2e 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc
@@ -42,15 +42,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_Jacobi_AutomaticOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = JACOBI;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc
index 4585201..8312db2 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_Jacobi_AutomaticOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = JACOBI;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc
index 9b864e4..82f394a 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc
@@ -42,15 +42,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_Jacobi_UserOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = JACOBI;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc
index 6266bea..78f5524 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_Jacobi_UserOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = JACOBI;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc
index bc40f5d..5407f3c 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc
@@ -42,15 +42,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SchurJacobi_AutomaticOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = SCHUR_JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = SCHUR_JACOBI;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc
index c55fa62..ed04d8f 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SchurJacobi_AutomaticOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = SCHUR_JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = SCHUR_JACOBI;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc
index cc7f334..4299738 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc
@@ -42,15 +42,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SchurJacobi_UserOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = SCHUR_JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = SCHUR_JACOBI;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc
index b8cd166..46a320a 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SchurJacobi_UserOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = SCHUR_JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = SCHUR_JACOBI;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc
index cdb4fd0..b87d386 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SuiteSparse_ClusterJacobi_AutomaticOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = CLUSTER_JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = CLUSTER_JACOBI;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc
index 15ed6b1..414a3e9 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SuiteSparse_ClusterJacobi_AutomaticOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = CLUSTER_JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = CLUSTER_JACOBI;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc
index dda9d62..b0da4af 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SuiteSparse_ClusterJacobi_UserOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = CLUSTER_JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = CLUSTER_JACOBI;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc
index 6ca9f7b..0078911 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SuiteSparse_ClusterJacobi_UserOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = CLUSTER_JACOBI;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = CLUSTER_JACOBI;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc
index 6a40ef8..dc35fc8 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SuiteSparse_ClusterTridiagonal_AutomaticOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = CLUSTER_TRIDIAGONAL;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = CLUSTER_TRIDIAGONAL;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc
index 6bd66bc..b8b8613 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SuiteSparse_ClusterTridiagonal_AutomaticOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = CLUSTER_TRIDIAGONAL;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = CLUSTER_TRIDIAGONAL;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc
index ae12ce9..bdea636 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SuiteSparse_ClusterTridiagonal_UserOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = CLUSTER_TRIDIAGONAL;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = CLUSTER_TRIDIAGONAL;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc
index 727d908..e8b844a 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
IterativeSchur_SuiteSparse_ClusterTridiagonal_UserOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = CLUSTER_TRIDIAGONAL;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = CLUSTER_TRIDIAGONAL;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc
index 3d3b642..00c0757 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_CxSparse_AutomaticOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = CX_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = CX_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc
index ae7f543..52a86c3 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_CxSparse_AutomaticOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = CX_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = CX_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc
index 9f3d752..9a4cdb5 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_CxSparse_UserOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = CX_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = CX_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc
index 366169c..960630a 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_CxSparse_UserOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = CX_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = CX_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc
index 700bb50..c4575df 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_EigenSparse_AutomaticOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc
index e363297..1cda776 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_EigenSparse_AutomaticOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc
index dd423f3..e9e42af 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_EigenSparse_UserOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc
index 27dc821..a3aa368 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_EigenSparse_UserOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc
index 7155bd9..f699981 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_SuiteSparse_AutomaticOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc
index 8991cca..7253075 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_SuiteSparse_AutomaticOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc
index e4375c1..dae0ed6 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_SuiteSparse_UserOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc
index 3c91c72..82bec88 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseNormalCholesky_SuiteSparse_UserOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc
index d9b10e4..a623cb9 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_CxSparse_AutomaticOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = CX_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = CX_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc
index f7dbc45..8d13c66 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_CxSparse_AutomaticOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = CX_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = CX_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc
index 27a673d..73b0787 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_CxSparse_UserOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = CX_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = CX_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc
index 9e5db38..9318a27 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_CxSparse_UserOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = CX_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = CX_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc
index bc8d66b..eb31fed 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_EigenSparse_AutomaticOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc
index 6910d87..d9c9b0b 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_EigenSparse_AutomaticOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc
index d626481..0e34884 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_EigenSparse_UserOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc
index 218c35f..bf7d5f4 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_EigenSparse_UserOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc
index 67fff21..7e8853f 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_SuiteSparse_AutomaticOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc
index f0dccb7..823dcfe 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_SuiteSparse_AutomaticOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kAutomaticOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc
index eb67b49..a375c94 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc
@@ -44,15 +44,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_SuiteSparse_UserOrdering) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 1;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 1;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc
index c13cc4f..9af1d56 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc
@@ -45,15 +45,17 @@
TEST_F(BundleAdjustmentTest,
SparseSchur_SuiteSparse_UserOrdering_Threads) { // NOLINT
- Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
- options.num_threads = 4;
- options.linear_solver_type = SPARSE_SCHUR;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- options.preconditioner_type = IDENTITY;
+ BundleAdjustmentProblem bundle_adjustment_problem;
+ Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+ options->num_threads = 4;
+ options->linear_solver_type = SPARSE_SCHUR;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ options->preconditioner_type = IDENTITY;
if (kUserOrdering) {
- options.linear_solver_ordering.reset();
+ options->linear_solver_ordering.reset();
}
- RunSolverForConfigAndExpectResidualsMatch(options);
+ Problem* problem = bundle_adjustment_problem.mutable_problem();
+ RunSolverForConfigAndExpectResidualsMatch(*options, problem);
}
} // namespace internal
diff --git a/internal/ceres/system_test.cc b/internal/ceres/system_test.cc
index 5fb520f..ca0f529 100644
--- a/internal/ceres/system_test.cc
+++ b/internal/ceres/system_test.cc
@@ -146,55 +146,69 @@
typedef SystemTest<PowellsFunction> PowellTest;
TEST_F(PowellTest, DenseQR) {
- Solver::Options options = *PowellsFunction().mutable_solver_options();
- options.linear_solver_type = DENSE_QR;
- RunSolverForConfigAndExpectResidualsMatch(options);
+ PowellsFunction powells_function;
+ Solver::Options* options = powells_function.mutable_solver_options();
+ options->linear_solver_type = DENSE_QR;
+ RunSolverForConfigAndExpectResidualsMatch(*options,
+ powells_function.mutable_problem());
}
TEST_F(PowellTest, DenseNormalCholesky) {
- Solver::Options options = *PowellsFunction().mutable_solver_options();
- options.linear_solver_type = DENSE_NORMAL_CHOLESKY;
- RunSolverForConfigAndExpectResidualsMatch(options);
+ PowellsFunction powells_function;
+ Solver::Options* options = powells_function.mutable_solver_options();
+ options->linear_solver_type = DENSE_NORMAL_CHOLESKY;
+ RunSolverForConfigAndExpectResidualsMatch(*options,
+ powells_function.mutable_problem());
}
TEST_F(PowellTest, DenseSchur) {
- Solver::Options options = *PowellsFunction().mutable_solver_options();
- options.linear_solver_type = DENSE_SCHUR;
- RunSolverForConfigAndExpectResidualsMatch(options);
+ PowellsFunction powells_function;
+ Solver::Options* options = powells_function.mutable_solver_options();
+ options->linear_solver_type = DENSE_SCHUR;
+ RunSolverForConfigAndExpectResidualsMatch(*options,
+ powells_function.mutable_problem());
}
TEST_F(PowellTest, IterativeSchurWithJacobi) {
- Solver::Options options = *PowellsFunction().mutable_solver_options();
- options.linear_solver_type = ITERATIVE_SCHUR;
- options.sparse_linear_algebra_library_type = NO_SPARSE;
- options.preconditioner_type = JACOBI;
- RunSolverForConfigAndExpectResidualsMatch(options);
+ PowellsFunction powells_function;
+ Solver::Options* options = powells_function.mutable_solver_options();
+ options->linear_solver_type = ITERATIVE_SCHUR;
+ options->sparse_linear_algebra_library_type = NO_SPARSE;
+ options->preconditioner_type = JACOBI;
+ RunSolverForConfigAndExpectResidualsMatch(*options,
+ powells_function.mutable_problem());
}
#ifndef CERES_NO_SUITESPARSE
TEST_F(PowellTest, SparseNormalCholeskyUsingSuiteSparse) {
- Solver::Options options = *PowellsFunction().mutable_solver_options();
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = SUITE_SPARSE;
- RunSolverForConfigAndExpectResidualsMatch(options);
+ PowellsFunction powells_function;
+ Solver::Options* options = powells_function.mutable_solver_options();
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+ RunSolverForConfigAndExpectResidualsMatch(*options,
+ powells_function.mutable_problem());
}
#endif // CERES_NO_SUITESPARSE
#ifndef CERES_NO_CXSPARSE
TEST_F(PowellTest, SparseNormalCholeskyUsingCXSparse) {
- Solver::Options options = *PowellsFunction().mutable_solver_options();
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = CX_SPARSE;
- RunSolverForConfigAndExpectResidualsMatch(options);
+ PowellsFunction powells_function;
+ Solver::Options* options = powells_function.mutable_solver_options();
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = CX_SPARSE;
+ RunSolverForConfigAndExpectResidualsMatch(*options,
+ powells_function.mutable_problem());
}
#endif // CERES_NO_CXSPARSE
#ifdef CERES_USE_EIGEN_SPARSE
TEST_F(PowellTest, SparseNormalCholeskyUsingEigenSparse) {
- Solver::Options options = *PowellsFunction().mutable_solver_options();
- options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
- options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
- RunSolverForConfigAndExpectResidualsMatch(options);
+ PowellsFunction powells_function;
+ Solver::Options* options = powells_function.mutable_solver_options();
+ options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+ options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+ RunSolverForConfigAndExpectResidualsMatch(*options,
+ powells_function.mutable_problem());
}
#endif // CERES_USE_EIGEN_SPARSE
diff --git a/internal/ceres/test_util.h b/internal/ceres/test_util.h
index c4c17d5..e43eb35 100644
--- a/internal/ceres/test_util.h
+++ b/internal/ceres/test_util.h
@@ -78,7 +78,7 @@
// It is assumed that the SystemTestProblem has an Solver::Options
// struct that contains the reference Solver configuration.
template <typename SystemTestProblem>
-class SystemTest : public::testing::Test {
+class SystemTest : public ::testing::Test {
protected:
virtual void SetUp() {
SystemTestProblem system_test_problem;
@@ -88,15 +88,10 @@
&expected_final_residuals_);
}
- void RunSolverForConfigAndExpectResidualsMatch(const Solver::Options& options) {
- LOG(INFO) << "Running solver configuration: "
- << ToString(options);
- SystemTestProblem system_test_problem;
+ void RunSolverForConfigAndExpectResidualsMatch(const Solver::Options& options,
+ Problem* problem) {
std::vector<double> final_residuals;
- SolveAndEvaluateFinalResiduals(
- options,
- system_test_problem.mutable_problem(),
- &final_residuals);
+ SolveAndEvaluateFinalResiduals(options, problem, &final_residuals);
// We compare solutions by comparing their residual vectors. We do
// not compare parameter vectors because it is much more brittle
@@ -119,10 +114,10 @@
Solve(options, problem, &summary);
CHECK_NE(summary.termination_type, ceres::FAILURE);
problem->Evaluate(Problem::EvaluateOptions(),
- NULL,
+ nullptr,
final_residuals,
- NULL,
- NULL);
+ nullptr,
+ nullptr);
}
std::vector<double> expected_final_residuals_;