Integrating a piecewise linear function means you end up with a piecewise quadratic function.
Unless there is come convex structure in the resulting piecewise quadratic function (i.e. the PWL is non-decreasing) you will end up with a model involving nonconvexities.
It was an interesting question so I had to play around a bit with it, and wrote a small post ...
I'm not familiar with what GUROBI does exactly, but continuous non-convex QCPs are solved using continuous branch-and-bound. This involves generating a linear relaxation of the problem which is solved at every node of the BnB tree, along with local optimisation of QCPs to get primal solutions (until we hit the global optimum).
The linear relaxations would ...
You can use IsQP, IsQCP to see the type of your model as follow:
Let's sat your model called $m$:
qp = m.IsQP
qcp = m.IsQCP
The output will be a binary value which indicates that your model is QP if $qp =1$ or your model is a QCP if $qcp = 1$. You should also use the following code to set the model as non-convex:
You can find out which constraints cause the infeasibility by the following code. For details look at here:
$m$ is your model's name. In the provided link, you can find details of how the infeasible constraints log in Pyomo. The output of the provided code is a dictionary with constraint name, constraint's body value, ...